drf路由分发、解析/渲染模块配置、使用admin、自动序列化配置
一、APIView的请求生命周期
二、重写的as_view方法
"""
1)as_view方法完成路由配置,返回配置函数是 csrf_exempt(view),也就是禁用了csrf认证规则
结论:所有继承APIView的子类,都不受csrf认证规则的限制
2)将请求处理的任务交给dispath方法完成
"""
三、重写的dispatch方法
"""
完成了三大核心任务:
1)请求对象的处理:请求渲染模块
2)请求过程的处理:三大认证模块 => 自己代码完成处理
3)请求结果的响应:异常模块处理异常响应 | 响应渲染模块处理正常响应
"""
四、drf路由分发配置
主路由:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('api.urls'))
]
副路由:
from django.conf.urls import url
from . import views
from django.views.static import serve
from d_priect import settings
urlpatterns = [
url(r'users/$',views.UserAPIView.as_view()),
url(r'users/(?P<pk>\d+)/$',views.UserAPIView.as_view()),
# 暴露文件
url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}),
]
视图:
注意:rest_framework需要先注册,在settings.py中:
INSTALLED_APPS = [
# drf框架的部分功能是依赖于注册后的,所有drf需要在app中注册
'rest_framework',
]
from rest_framework.views import APIView
from rest_framework.response import Response
class UserAPIView(APIView):
def get(self,request,*args,**kwargs):
return Response('get ok')
def post(self,*args,**kwargs):
return Response('post ok')
五、解析模块配置
from rest_framework.settings import APISettings
# 自定义drf配置
REST_FRAMEWORK = {
# 解析模块
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser', # json数据类型
'rest_framework.parsers.FormParser', # urlencoded数据类型
'rest_framework.parsers.MultiPartParser' # from-data数据类型
],
# 渲染模块
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer', # 数据渲染
'rest_framework.renderers.BrowsableAPIRenderer', # 浏览器渲染
],
}
六、渲染模块配置
浏览器渲染打开
别人知道你后台用什么写的,好攻击你
浏览器渲染关闭
效果:数据正常渲染,浏览器只有数据。别人不知道你后台数据怎么写的,不容易攻击你
结论
当项目没上线的时候:一般浏览器渲染打开
当项目上线:为了安全一般把浏览器渲染关闭
七、drf使用后台admin
现在admin.py种写入:然后一切正常
from django.contrib import admin
from . import models
# 注册
admin.site.register(models.Book)
admin.site.register(models.Publish)
admin.site.register(models.Author)
admin.site.register(models.AuthorDetail)
drf路由分发、解析/渲染模块配置、使用admin、自动序列化配置的更多相关文章
- DRF路由组件和渲染器组件
参考博客:https://www.cnblogs.com/wupeiqi/articles/7805382.html
- DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render
DRF框架 全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...
- Admin注册和路由分发详解
Admin注册和路由分发详解 1.启动 #autodiscover_modules('admin', register_to=site) 2.注册 1.单例对象 admin.site = AdminS ...
- 第二章、drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 (详细版)
目录 drf框架 - 请求模块 | 渲染模块 解析模块 | 异常模块 | 响应模块 Postman接口工具 drf框架 注册rest_framework drf框架风格 drf请求生命周期 请求模块 ...
- 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)
一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...
- drf框架 - 请求模块 | 渲染模块
Postman接口工具 官方 https://www.getpostman.com/ get请求,携带参数采用Paramspost等请求,提交数据包可以采用三种方式:form-date.urlenc ...
- drf框架概况-resful接口规范-请求模块-渲染模块-Postman-drf请求生命周期
drf框架 全称:django-rest- framework 知识点: """ 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码-基于restful ...
- Django框架04 /模板相关、别名/反向解析/路由分发
Django框架04 /模板相关.别名/反向解析/路由分发 目录 Django框架04 /模板相关.别名/反向解析/路由分发 1. 语法 2. 变量/万能的点 3 . 过滤器 4. 标签Tags 5. ...
- django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口
简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...
随机推荐
- C# DataTable数据类型判断
当我们从数据中获取到数据,一般会使用 DataTable 接收,然后会遍历每行数据.由于从数据库中读取的数据可能为空,比如我们的编译代码如下: foreach (DataRow datarow in ...
- Linux学习_菜鸟教程_4
Linux远程登录 已经了解了登录流程,学会了用SecureCRT进行操作 Linux文件基本属性 Linux为保护系统安全,对不同的用户,开放不同的文件访问权限. 在linux中,我们可以使用ll或 ...
- Java Math类(java.lang包)
Math类包含用于执行基本数学运算的方法,其所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 运行结果:
- 探究Dubbo的拓展机制: 下
承接上篇, 本篇博文的主题就是认认真真捋一捋, 看一下 Dubbo是如何实现他的IOC / AOP / 以及Dubbo SPI这个拓展点的 总览: 本篇的话总体上分成两部分进行展开 第一点就是 Dub ...
- infer 代码静态分析
infer 代码静态分析 静态代码分析工具,主要是为了提高我们的代码质量. 通常,我们提高代码质量的方式是通过CodeReview,但是这个过程耗费的人工和时间往往较大.并且随着代码量的增加人肉检测起 ...
- dp - 递推
C. Multiplicity time limit per test 3 seconds memory limit per test 256 megabytes input standard inp ...
- 20190925Java课堂记录(一)
判断字符串是否回文 设计思想 利用递归,每次返回长度减二的字符串,最终返回结果 源程序代码 import java.util.Scanner; public class palindrome { st ...
- Qt Installer Framework翻译(5-0)
创建安装程序 创建离线和在线安装程序,需要执行以下步骤: 为可安装组件创建一个package文件夹.有关更多信息,请参见包文件夹章节. 在config文件夹中创建一个名为config.xml的配置文件 ...
- 一行代码去掉Devexpress弹窗
使用的是.net hook方法: 使用代码: using System; using System.Windows.Forms; namespace AlexDevexpressToolTest { ...
- 用HttpURLConnection来完成HTTP发送报文接收报文!
public String sendMsg(String url, byte[] PostData) { String content = null; URL urls = null; try { u ...