REST framework
文章平均质量分 95
i0208
石匠
展开
-
重写drf的ValidationError, 改变抛出异常的状态码
项目中修改密码修改密码功能,前端将老密码和新密码发到后端,后端校验,返回信息,我反序列化时这里使用了obj.is_valid(raise_exception=True)会将钩子中 raise ValidationError({...})抛出的异常返回,但是状态码是 400, 前端想要200,所以要重写 异常类,将默认的状态码改成 200 okfrom rest_framework.response import Responsefrom rest_framework.views import A原创 2020-09-21 16:36:28 · 2159 阅读 · 0 评论 -
REST framework 分页组件
REST framework提供了分页的支持。我们可以在配置文件settings.py中设置全局的分页方式,如:REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 100 # 每页数目}如果在视...原创 2020-02-26 15:26:43 · 341 阅读 · 0 评论 -
REST framework 过滤组件 排序组件 django-filter
SearchFilter搜索过滤组件使用步骤:1.导入搜索过滤器from rest_framework.filters import SearchFilter2.局部配置filter_backends = [SearchFilter]3.局部配置过滤类依赖的过滤条件(字段)search_fields = ['name', 'price']注意:依赖的过滤字...原创 2020-02-26 15:02:04 · 592 阅读 · 0 评论 -
Token 与 JWT认证
为什么用Token先了解身份验证的演变:随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,遇到的一个问题就是身份验证会话管理,必须记住登录的用户,也就是必须吧每个用户区分开,因为HTTP请求是无状态的,所以解决办法就是给每个人发送一个回话标识(sessionid)随机字符串,每次大家向我发起HTTP请求的时候,把这个字符串给一并捎过来, 这样我就能区分开谁是谁了.这样就产...原创 2020-02-21 19:39:43 · 591 阅读 · 0 评论 -
REST framework 频率组件
源码# 1)APIView的dispath方法中的 self.initial(request, *args, **kwargs) 点进去# 2)self.check_throttles(request) 进行频率认证# 频率组件核心源码分析def check_throttles(self, request): throttle_durations = [] # 1)...原创 2020-02-20 19:59:13 · 223 阅读 · 0 评论 -
REST framework 权限组件
源码权限组件入口 self.check_permissions(request) 认证细则: def check_permissions(self, request): # 遍历权限对象列表得到一个个权限对象(权限器),进行权限认证 for permission in self.get_permissions(): ...原创 2020-02-20 19:51:10 · 406 阅读 · 0 评论 -
REST framework 认证组件
源码 def perform_authentication(self, request): # 调用 Request类的 方法属性 user 方法 => self._authenticate() 完成认证 request.user 认证的细则: # 做认证 def _authenticate(self):...原创 2020-02-20 19:32:54 · 242 阅读 · 0 评论 -
REST framework 三大认证组件
RBAC基于用户权限访问控制的认证 - Role-Based Access ControlDjango框架采用的是RBAC认证规则,RBAC认证规则通常会分为 三表规则、五表规则,Django采用的是六表规则三表规则:用户表、角色表、权限表 五表规则:用户表、角色表、权限表、用户角色关系表、角色权限关系表 六表规则:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户...原创 2020-02-20 19:15:37 · 304 阅读 · 0 评论 -
REST framework 路由组件
from django.conf.urls import includefrom rest_framework.routers import SimpleRouterrouter = SimpleRouter() # SimpleRouter类内部做了{请求:函数}的映射关系# 所有路由与ViewSet视图类的都可以注册,会产生 '^v6/books/$' 和 '^v6/books/(?...原创 2020-02-19 19:49:27 · 352 阅读 · 0 评论 -
REST framework 视图类 总结
名称 父类 请求方法 功能 特点 APIView View post, get, put, patch, delete 增删改查 重写as_view()方法,二次封装request,三大认证,dispatch分发 generics.py Generic...原创 2020-02-19 19:46:20 · 176 阅读 · 0 评论 -
REST framework 视图类之视图集 viewsets
viewsetsviewsets内拥有5个功能类ViewSetMixin作为viewsets内其他4个功能类的基本功能类(其他类直接或间接的继承了它)功能:重写as_view(),可以将请求方法与视图类中的自定义函数名完成映射如:as_view({'get': 'list', 'post': 'my_post'})ViewSet继承:ViewSetMixin, v...原创 2020-02-19 19:44:14 · 532 阅读 · 0 评论 -
REST framework 视图类之视图工具 mixins 与 generics
五个视图国战类mixins有五个工具类文件,一共提供了五个工具类,六个工具方法:单查、群查、单增、单删、单整体改、单局部改则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量。这五个扩展类需要搭配GenericAPIView父类,因为五个扩展类的实现需要调用GenericAPIView提供的序列化器与数据库查询的方法。搭配GenericAPIView的目的:路由调用G...原创 2020-02-19 17:51:30 · 339 阅读 · 0 评论 -
REST framework 视图类之APIView与GenericAPIView
APIView 基础视图类rest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承自Django的View父类传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework的Response对象,视图会为响应数...原创 2020-02-18 18:00:30 · 326 阅读 · 0 评论 -
REST framework 序列化组件Serializer与ModelSerializer区别
序列化:Serializer- 1. 序列化的字段数量可随意,单要与表中字段名对应- 2. 自定义序列化属性:gender = serializers.SerializerMethodField()def get_gender(self, obj): # obj是对应表中的一条记录(即:对象)# choice类型的解释型值 get_字段_display() 来访问return o...原创 2020-02-16 13:55:51 · 471 阅读 · 0 评论 -
REST framework 序列化组件之ModelSerializer
ModelSerializer如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段 包含默认的create()和update()的实现定义序列化器比如我们创建一个Boo...原创 2020-02-16 13:52:19 · 666 阅读 · 0 评论 -
REST framework 序列化组件之Serializer
Json序列化与Serializer序列化的区别Json:序列化: 将对象序列化成字符串用于传输反序列化: 将字符串反序列化成对象用于使用Serializer:序列化: 将Model类对象序列化成字符串用于传输反序列化: 将字符串反序列化成Model对象用于使用Serializer序列化组件的工作方式与django froms组件非常相似,为每一个model类通过一套...原创 2020-02-15 17:49:52 · 537 阅读 · 0 评论 -
REST framework 响应模块
from rest_framework.response import Response源码class Response(SimpleTemplateResponse) def __init__(self, data=None, status=None, template_name=None, headers=None, ...原创 2020-02-14 13:54:51 · 448 阅读 · 0 评论 -
REST framework 异常模块
作用1)所有经过drf的APIView视图类产生的异常,都可以提供异常处理方案2)drf默认提供了异常处理方案(rest_framework.views.exception_handler),但是处理范围有限3)drf提供的处理方案两种,处理了返回异常现象,没处理返回None(后续就是服务器抛异常给前台)4)自定义异常的目的就是解决drf没有处理的异常,让前台得到合理的异常信息返回,后台...原创 2020-02-14 11:06:16 · 487 阅读 · 0 评论 -
REST framework 解析模块
作用drf给我们提供了多种解析数据包方式的解析类我们可以通过配置,来控制前台提交的哪些格式的数据后台在解析,哪些数据不解析根据请求头 content-type 选择对应的解析器对请求体内容进行处理。有application/json,x-www-form-urlencoded,form-data等格式源码解析源码入口:APIView类的dispatch方法中 reque...原创 2020-02-14 10:37:20 · 413 阅读 · 0 评论 -
REST framework 渲染模块
作用根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件。内置渲染器from rest_framework.renderers import JSONRendererfrom rest_framework.renderers import BrowsableAPIRendererfrom rest_framework.renderers import AdminRe...原创 2020-02-14 09:45:14 · 244 阅读 · 0 评论 -
REST framework 请求模块
问题:为什么前端的请求过来能自动识别Django的CBV模式里的GET或POST方法案例:views.py# 视图层from django.shortcuts import render, HttpResponsefrom django.views import Viewclass CBVTest(View): def get(self, request): ...原创 2020-02-14 09:09:46 · 308 阅读 · 0 评论 -
REST framework 简介
作用Django Rest Framework 是一个强大且灵活的工具包,用以构建Web APIDjango REST Framework可以在Django的基础上迅速实现API,并且自身还带有WEB的测试页面,可以方便的测试自己的APIWeb项目的两种模式前后端不分离在前后端不分离的引用模式中,前端页面看到的效果都是由后端控制的,由后端页面渲染或者重定向(每次返回时都是使用r...原创 2020-02-13 11:17:45 · 5397 阅读 · 0 评论 -
restful接口规范
Web API 接口联系两个物质的媒介,完成信息交互Web程序中:联系前台页面与后台数据库的媒介web接口组成:url:长得像返回数据的url链接 请求参数:前台按照指定的key提供数据给后台 响应数据:后台与数据库交互后将数据反馈给前台(状态码,状态信息,响应数据)接口规范web数据请求接口设计规范共10条,可以分为URL与响应两部分URL通常使用https请求...原创 2020-02-12 12:28:51 · 330 阅读 · 0 评论