一、APIView的请求生命周期

二、重写的as_view方法

  1. """
  2. 1)as_view方法完成路由配置,返回配置函数是 csrf_exempt(view),也就是禁用了csrf认证规则
  3. 结论:所有继承APIView的子类,都不受csrf认证规则的限制
  4. 2)将请求处理的任务交给dispath方法完成
  5. """

三、重写的dispatch方法

  1. """
  2. 完成了三大核心任务:
  3. 1)请求对象的处理:请求渲染模块
  4. 2)请求过程的处理:三大认证模块 => 自己代码完成处理
  5. 3)请求结果的响应:异常模块处理异常响应 | 响应渲染模块处理正常响应
  6. """

四、drf路由分发配置

主路由:

  1. from django.conf.urls import url, include
  2. from django.contrib import admin
  3. urlpatterns = [
  4. url(r'^admin/', admin.site.urls),
  5. url(r'^api/', include('api.urls'))
  6. ]

副路由:

  1. from django.conf.urls import url
  2. from . import views
  3. from django.views.static import serve
  4. from d_priect import settings
  5. urlpatterns = [
  6. url(r'users/$',views.UserAPIView.as_view()),
  7. url(r'users/(?P<pk>\d+)/$',views.UserAPIView.as_view()),
  8. # 暴露文件
  9. url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}),
  10. ]

视图:

注意:rest_framework需要先注册,在settings.py中:

  1. INSTALLED_APPS = [
  2. # drf框架的部分功能是依赖于注册后的,所有drf需要在app中注册
  3. 'rest_framework',
  4. ]
  1. from rest_framework.views import APIView
  2. from rest_framework.response import Response
  3. class UserAPIView(APIView):
  4. def get(self,request,*args,**kwargs):
  5. return Response('get ok')
  6. def post(self,*args,**kwargs):
  7. return Response('post ok')

五、解析模块配置

  1. from rest_framework.settings import APISettings
  1. # 自定义drf配置
  2. REST_FRAMEWORK = {
  3. # 解析模块
  4. 'DEFAULT_PARSER_CLASSES': [
  5. 'rest_framework.parsers.JSONParser', # json数据类型
  6. 'rest_framework.parsers.FormParser', # urlencoded数据类型
  7. 'rest_framework.parsers.MultiPartParser' # from-data数据类型
  8. ],
  9. # 渲染模块
  10. 'DEFAULT_RENDERER_CLASSES': [
  11. 'rest_framework.renderers.JSONRenderer', # 数据渲染
  12. 'rest_framework.renderers.BrowsableAPIRenderer', # 浏览器渲染
  13. ],
  14. }

六、渲染模块配置

浏览器渲染打开

别人知道你后台用什么写的,好攻击你

浏览器渲染关闭

效果:数据正常渲染,浏览器只有数据。别人不知道你后台数据怎么写的,不容易攻击你

结论

当项目没上线的时候:一般浏览器渲染打开

当项目上线:为了安全一般把浏览器渲染关闭

七、drf使用后台admin

现在admin.py种写入:然后一切正常

  1. from django.contrib import admin
  2. from . import models
  3. # 注册
  4. admin.site.register(models.Book)
  5. admin.site.register(models.Publish)
  6. admin.site.register(models.Author)
  7. admin.site.register(models.AuthorDetail)

drf路由分发、解析/渲染模块配置、使用admin、自动序列化配置的更多相关文章

  1. DRF路由组件和渲染器组件

    参考博客:https://www.cnblogs.com/wupeiqi/articles/7805382.html

  2. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  3. Admin注册和路由分发详解

    Admin注册和路由分发详解 1.启动 #autodiscover_modules('admin', register_to=site) 2.注册 1.单例对象 admin.site = AdminS ...

  4. 第二章、drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 (详细版)

    目录 drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 Postman接口工具 drf框架 注册rest_framework drf框架风格 drf请求生命周期 请求模块 ...

  5. 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)

    一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...

  6. drf框架 - 请求模块 | 渲染模块

    Postman接口工具 官方 https://www.getpostman.com/ get请求,携带参数采用Params​post等请求,提交数据包可以采用三种方式:form-date.urlenc ...

  7. drf框架概况-resful接口规范-请求模块-渲染模块-Postman-drf请求生命周期

    drf框架 全称:django-rest- framework 知识点: """ 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码-基于restful ...

  8. Django框架04 /模板相关、别名/反向解析/路由分发

    Django框架04 /模板相关.别名/反向解析/路由分发 目录 Django框架04 /模板相关.别名/反向解析/路由分发 1. 语法 2. 变量/万能的点 3 . 过滤器 4. 标签Tags 5. ...

  9. django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口

    简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...

随机推荐

  1. SpringBoot基于数据库的定时任务统一管理

    定时任务1 import lombok.extern.slf4j.Slf4j; /** * @author Created by niugang on 2019/12/24/15:29 */ @Slf ...

  2. Tarjan算法伪代码

    伪代码: 栈:当前dfs路径上的点low[x]:x能到达的点中最小的dfn dfs(x,t)    将x入栈     dfn[x]=t    low[x]=t    for(x,y)        i ...

  3. 【X86】---X86处理器大小端的数据存储验证

    之前也关注过大小端的存储,可能时间久了,加之又之前的电脑抽象换成了当前的处理器寄存器的值判断,导致自己总是有点蒙圈.看Spec手册的时候,有时会无法与手册中某个Bit的值与RU/RW工具读出来的对应上 ...

  4. 继承Exception⭐⭐

    public class ECOrderException : Exception { //第一种类型: throw new ECOrderException { ErrorCode = " ...

  5. mysql累加、累减

    累加 先上表结构: CREATE TABLE `abc` ( `jidu` ) NOT NULL AUTO_INCREMENT, `jine` ) DEFAULT NULL, PRIMARY KEY ...

  6. 关于neo4j初入门(5)

    neo4j和Java Neo4j提供JAVA API以编程方式执行所有数据库操作. 它支持两种类型的API: Neo4j的原生的Java API Neo4j Cypher Java API Neo4j ...

  7. LeetCode 第17题--电话号码的组合(DFS)

    1. 题目 2.题目分析与思路 3.代码 1. 题目 输入:"23" 输出:["ad", "ae", "af", &qu ...

  8. Django 数据库连接缓存的坑

    https://www.cnblogs.com/xcsg/p/11446990.html

  9. mybatis增强工具MyBatis-plus

    如果你正在用mybatis,那MyBatis-plus你不能错过,配合使用可极大简化开发.提高效率! 简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis ...

  10. python类型-序列

    注:本文档主要是学习<Python核心编程(第二版)>时做的资料整理. 1.序列 序列的成员是有序排列的,并且可以通过下标偏移量访问到它的一个或者几个成员,包括字符串(普通字符串和Unic ...