drf安装

  1. pip install djangorestframework

  2. 在settings文件中注册app : INSTALLED_APPS = [..., 'rest_framework']

使用

视图层

from rest_framework.views import APIView
from rest_framework.response import Response
class BookAPI(APIView): # 继承rest_framework的APIView
# rest_framework会对request进行二次封装
def get(self, request, *args, **kwargs):
print(request.query_params) # 通过?拼接的数据会封装到query_params中
return Response('ok') def post(self, request, *args, **kwargs):
print(request.data) # 而通过body携带过来的数据会被封装到data中
return Response('ok')

路由层

from django.conf.urls import url
from . import views urlpatterns = [
url(r'^books/$', views.BooksAPI.as_view()),
]

APIView初步分析

通过drf写接口是我们视图层继承的类变成了APIView,而APIView又继承了django的View,

显然APIView就是对View的进一步封装,所以下面还是从as_view和dispatch方法来分析

rest_framework.views文件中

APIView类

as_view方法

dispatch方法

initialize_request方法

Request类

__init__

query_params 与 data

APIView类

initial方法

总结:

1. 对于as_view方法, 只帮我们新加一个注释中间件的方法

2. 对于dispatch方法, 帮我们完成了一下四件事

  ① 重新封装了request,并且把原本的request封装到_request中

  ② 把?拼接的数据封装到query_params中, body携带的数据封装到data中

  ③ 添加了三大认证组件

  ④ 重新封装返回的response

drf安装与APIView初步分析的更多相关文章

  1. vue 前后端分离 接口及result规范 及drf安装使用方法

    接口 # 接口:url链接,通过向链接发送不同的类型请求与参数得到相应的响应数据​# 1.在视图层书写处理请求的 视图函数# 2.在路由层为视图函数配置 url链接 => 产生接口# 3.前台通 ...

  2. 不会DRF?源码都分析透了确定不来看?

    目录 不会DRF?源码都分析透了确定不来看? 快速使用DRF写出接口 序列化和反序列化 drf快速使用 views.py serializer.py urls.py 在settings的app中注册 ...

  3. 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言

    基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...

  4. Azure底层架构的初步分析

    之所以要写这样的一篇博文的目的是对于大多数搞IT的人来说,一般都会对这个topic很感兴趣,因为底层架构直接关乎到一个公有云平台的performance,其实最主要的原因是我们的客户对此也非常感兴趣, ...

  5. http_load安装与测试参数分析 - 追求自由自在的编程 - ITeye技术网站

    http_load安装与测试参数分析 - 追求自由自在的编程 - ITeye技术网站 http_load -p 50 -s 120 urls

  6. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  7. S2-052 RCE漏洞 初步分析

    PS:初步分析,只是分析了Struts2 REST插件的部分,本来菜的抠脚不敢发,但看到各大中心发的也没比我高到哪里去,索性发出来做个记事! 漏洞描述 2017年9月5日,Apache Struts发 ...

  8. DirectUI的初步分析-转

    DirectUI的初步分析(一) 最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是 ...

  9. Netfilter之连接跟踪实现机制初步分析

    Netfilter之连接跟踪实现机制初步分析 原文: http://blog.chinaunix.net/uid-22227409-id-2656910.html 什么是连接跟踪 连接跟踪(CONNT ...

随机推荐

  1. 【转】Fiddler抓包和修改WebSocket数据,支持wss

    记录一下用Fiddler对WebSocket收发的数据进行抓包分析和篡改数据,只找到这么一个方法,能用就行吧.时间:2019-3-29环境: win7 + Fiddler 5.0 Fiddler抓取W ...

  2. Linux Shell:根据指定的文件列表 或 map配置,进行文件位置转移

    读取配置文件,进行文件位置转移 在whenb.csv中指定了需要从/home/root/cf/下移除到/home/root/cf_wh/下文件列表,whenb.csv中包含记录如下: enb- enb ...

  3. SQL Server case when 实现分类汇总

    case when 实现分类汇总

  4. springcloud添加自定义的endpoint来实现平滑发布

    在我之前的文章  springcloud如何实现服务的平滑发布 里介绍了基于pause的发布方案. 平滑发布的核心思想就是:所有服务的调用者不再调用该服务了就表示安全的将服务kill掉. 另外actu ...

  5. PostMan Request Export

  6. go-micro框架学习1-准备工作

    下载golang环境,地址:https://studygolang.com/dl,这里使用的是1.11.10版本. 下载golang IDE,这里使用Lite,下载地址:http://liteide. ...

  7. -bash: iostat: command not found解决办法

    [root@testhost ~]# iostat-bash: iostat: command not found IOSTAT 命令不可用,首先确认sysstat包是否安装,sysstat包中包括i ...

  8. JMeter 使用 http长连接的方法

    前言 如果需要在JMeter通过http长连接发送请求,首先需要选择了Use KeepAlive 长连接协议,虽然默认是勾选的,但也需要确认一下. 除了选择了Use KeepAlive 长连接协议,还 ...

  9. springboot 整合Elasticsearch

    Elasticsearch Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,可用于实现全文搜索和实时数据统计. 在 ...

  10. Kubernetes 控制器之 Service 讲解(七)

    一.背景介绍 我们这里准备三台机器,一台master,两台node,采用kubeadm的方式进行安装的,安装过程大家可以参照我之前的博文. IP 角色 版本 192.168.1.200 master ...