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 Rest framework基础使用之 serializer的更多相关文章

  1. Django rest framework 基础

    01: Django rest framework 基础 ​ ​ 1.1 什么是RESTful 1. REST与技术无关,代表的是一种软件架构风格(REST是Representational Stat ...

  2. Django REST framework基础:视图和路由

    DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Dj ...

  3. Django Rest framework基础使用之View:APIView, mixins, generic, viewsets

    先看一张图,对DRF的各个APIView,Mixin,Viewset等有个基本印象: 具体使用方法: 1.APIView: DRF 的API视图 有两种实现方式: 一种是基于函数的:@api_view ...

  4. Django Rest framework基础使用之Request/Response

    1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpReque ...

  5. 01: Django rest framework 基础

    1.1 RESTful API设计规范 参考地址: http://www.cnblogs.com/wupeiqi/articles/7805382.html   1.API与用户的通信协议,总是使用H ...

  6. Django Restful Framework (一): Serializer

    Serializer 允许复杂数据(比如 querysets 和 model 实例)转换成python数据类型,然后可以更容易的转换成 json 或 xml 等.同时,Serializer也提供了反序 ...

  7. Django REST framework基础:解析器和渲染器

    解析器 解析器的作用 解析器的作用就是服务端接收客户端传过来的数据,把数据解析成自己可以处理的数据.本质就是对请求体中的数据进行解析. 在了解解析器之前,我们要先知道Accept以及ContentTy ...

  8. Django REST framework基础:认证、权限、限制

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  9. Django REST framework基础:分页

    DRF分页组件 为什么要使用分页 我们数据表中可能会有成千上万条数据,当我们访问某张表的所有数据时,我们不太可能需要一次把所有的数据都展示出来,因为数据量很大,对服务端的内存压力比较大还有就是网络传输 ...

随机推荐

  1. Cas 服务器 JDBC身份校验

    之前的Cas服务器一直使用静态配置的账号密码进行身份认证,现在要让Cas服务器通过MySQL数据库中的用户信息进行身份认证. 一.添加数据库访问依赖 <!-- https://mvnreposi ...

  2. 修改主机时间对MySQL影响

    背景 在装机实施时,BIOS忘记调整时间,导致服务器时间与CST不符合:待发现问题时,MySQL环境已经在运行,所以只能通过操作系统进行更改:但是更改完成后,MySQL进行重启时发生了问题.以下为问题 ...

  3. c/c++ 重载运算符的思考

    c/c++ 重载运算符的思考 #include <iostream> using namespace std; class Imaginary{ public: Imaginary():r ...

  4. c/c++ 线性表之单向循环链表

    c/c++ 线性表之单向循环链表 线性表之单向循环链表 不是存放在连续的内存空间,链表中的每个节点的next都指向下一个节点,最后一个节点的下一个节点不是NULL,而是头节点.因为头尾相连,所以叫单向 ...

  5. Docker 入门到实践(四)Docker 使用镜像

    一.获取镜像 Docker Hub 上有大量的高质量的镜像让我们获取,命令为: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 具体的选项可以 ...

  6. Ubuntu 普通用户无法启动Google chrome

    删除 /home/你的用户名/.config/google-chrome文件,再打开就好了 root@ecos:cd /home/ecos/.config root@ecos:~/.config# r ...

  7. Kafka如何删除topic?

    Kafka如何删除topic? 今天为大家带来“Kafka删除topic原理解析”,希望可以帮到那些苦于无法删除topic的朋友们. 前提条件: 在启动broker时候开启删除topic的开关,即在s ...

  8. J - Abbott's Revenge 搜索 寒假训练

    题目 题目大意:这个题目就是大小不超过9*9的迷宫,给你起点终点和起点的方向,让你进行移动移动特别之处是不一定上下左右都可以,只有根据方向确定可以走的方向.思路:需要写一个读入函数,这个需要读入起点, ...

  9. MySQL高级知识(五)——索引分析

    前言:前面已经学习了explain(执行计划)的相关知识,这里利用explain对索引进行优化分析. 0.准备 首先创建三张表:tb_emp(职工表).tb_dept(部门表)和tb_desc(描述表 ...

  10. BZOJ 4820 [SDOI2017] 硬币游戏

    Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利.大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了.同学们觉得要加强趣味性,所以要找 ...