zoukankan      html  css  js  c++  java
  • Django Rest framework基础使用之 serializer

    rest-framework文档地址:http://www.django-rest-framework.org/

    Django Rest framework是一个非常强大且灵活的工具包,用于构建web API

    选择rest framework的理由:

      1)在线可视的API

      2)验证策略涵盖了OAuth1a和OAuth2

      3)同时支持ORM(对象关系映射)和非ORM数据源的序列化

      4)大量文档及强大社区支持

    1、安装:pip install djangorestframework

      说明:如果安装coreapi的时候,出现utf-8报错,可以将虚拟环境中的Lib---->site package--->pip--->compat---__init__.py中的第75行return s.decode("utf-8")改为"gbk",然后uninstall coreapi,再重新安装。

    2、将 "rest_framework"加入到INSTALLED_APPS 设置中

    3、配置url

      from django.conf.urls import url, include

      url(r"^api-auth/", include("rest_framework.urls"))

      ------这个url是restframework登录和登出的url,在使用浏览器API测试的时候是很有用的,如果你定义的某个接口是需要登录之后才能被调用的话。

      from rest_framework.documentation import include_docs_urls

      url(r"docs", include_docs_urls(title=""))

      ------配置DRF生成自动API文档

     4、restframework的serializer.Serializer

      类似于Django的Form类,可用来序列化和反序列化实例对象

      

    使用serializer序列化model实例:

      

    我们也可以用serializer来序列化querysets,序列化querysets的时候,我们需要在serializer参数中加上many=True的标志

      

     5、ModelSerializer

      从上面的例子中可以看出来,使用Serializer在定义序列化字段的时候,写的很复杂,几乎需要把我们的mode全部复制一遍,为了减少代码量,ModelSerializer应运而生

      同样是上面的例子,我们用ModelSerializer来重构如下:

      

      那么 ModelSerializer到底做了什么?通过下面这几行代码,我们可以看出来它只是通过model将字段自动关联起来了:

      from snippets.serializers import SnippetSerializer
      serializer = SnippetSerializer()
      print(repr(serializer))
      

      我们再去看它的ModelSerializer源码,可以看到,它里面已经为我们写好了create和update函数

     
  • 相关阅读:
    Django使用manage.py test错误解决
    Notepad++的find result窗口恢复
    qrcode 配套 PIL 或者 Image + ImageDraw
    pymssql.OperationalError: (20017 问题解决
    ConfigParser使用:1.获取所有section为list,2.指定section具体值,并转换为dict
    selenium&Firefox不兼容问题:Message: Unable to find a matching set of capabilitie;Can't load the profile. Profile;Message: 'geckodriver' executable needs to be in PATH
    使用宏实现透视表部分功能,将AB列数据合并统计.
    反射
    类的多态
    封装
  • 原文地址:https://www.cnblogs.com/fiona-zhong/p/9651452.html
Copyright © 2011-2022 走看看