随笔分类 - DRF
摘要:前戏 所谓的渲染器(Renderer),其实就是将服务器生成的数据的格式转换为HTTP请求的格式。REST框架包含许多内置的Renderer类,可以返回各种媒体类型的响应。还支持定义自定义渲染器,灵活地设计自己的媒体类型。 在DRF配置参数中,可用的渲染器依然是作为一个类的列表进行定义。但与解析器不
阅读全文
摘要:前戏 解析器是干什么的?因为前后端分离,因为可能采用json、xml、html等各种不同格式的内容,后端必须要有一个解析器来解析前端发送过来的数据,也就是翻译器!否则后端凭什么看懂前端的数据?对应地,后端也有一个渲染器Render,和解析器是相反的方向,将后端的数据翻译成前端能明白的数据格式。 DR
阅读全文
摘要:@api_view() 在DRF中,也可以使用常规的基于函数的视图,DRF提供了一组简单的装饰器,用来包装你的视图函数,以确保视图函数会收到Request(而不是Django原始的HttpRequest)对象。并且返回Response(而不是Django中的HttpResponse)对象。同时允许你
阅读全文
摘要:请求 对于DRF的request对象,有下面的属性: .data .query_params .parsers .accepted_renderer .accepted_media_type .user .auth .authenticators .method .content_type .str
阅读全文
摘要:在学django的时候,我们写视图是这样的 from django.http import HttpResponse, JsonResponse from django.views.decorators.csrf import csrf_exempt from rest_framework.rend
阅读全文
摘要:跨域 跨域是因为浏览器的同源策略导致的,也就是说浏览器会阻止非同源的请求。那什么是非同源呢?既域名不同,端口不同,都属于非同源的。比如我们用vue写了个前端页面,端口为8081,Django写了个后台,端口为8000,前端往后台提交数据,后台返回数据会被浏览器拦截,因为端口不同。这就是跨域。 浏览器
阅读全文
摘要:前戏 当我们的数据有上万条的时候,我们不可能把所有的数据都返回给前端,肯定是每页显示多少条这样的显示在前端,这样方便用户的查看。DRF提供了我们三种分页的方法, 第一种 PageNumberPagination 看第n页,每页显示n条数据,第二种 LimitOffsetPagination 在第n个
阅读全文
摘要:频率 频率是限制请求访问次数的,比如别人用爬虫爬取我们的网站时,在很短的时间内会产生大量的请求,会大大的增加我们服务器的压力,所以对某些接口,进行频率的限制还是很有必要的。 DRF给我们提供了频率的类,我们可以直接拿来用就可以了,可以在throtting里去看看都给我们提供了哪些类。 from re
阅读全文
摘要:前戏 大家都知道http协议是无状态的,每次发送请求他们怎么知道我们是不是登录过呢?我们可以在用户登录之后给用户一个“暗号”,下次请求的时候带着这个“暗号”来。我们拿自己存的和携带过来的进行对比,如果一样,就可以认为是登录过的。 认证 先来创建一张用户表 class User(models.Mode
阅读全文
摘要:路由组件 先来看下我们前面写的路由 from django.conf.urls import url, include from .views import BookModelView urlpatterns = [ url(r'^book/$', BookModelView.as_view({"g
阅读全文
摘要:前戏 在前面几篇文章里,我们写了get请求,post请求,put请求,在来写个delete请求,大概如下。 class BookView(APIView): # 查询所有的数据和post方法 def get(self, request): book_queryset = Book.objects.a
阅读全文
摘要:前戏 在之前我们写序列化器的时候,写的很low,遇到反序列化的有时候还需要重写该字段,用post请求的时候,还要重写create方法,用put请求的时候,还需要重写update方法。总而言之,写起来很麻烦。来看看之前的是怎么写的 class BookSerializer(serializers.Se
阅读全文
摘要:前戏 在之前我们对前端妹子传来的数据进行校验,使用的是序列化类来进行校验的,但这里面往往满足不了我们的需求,更多的时候我们希望自己定义校验规则。这里介绍三种自定义校验的方式。分别是单一字段校验,多个字段校验,还有就是自定义校验 单一字段校验 在序列化器BookSerializer自定义一个方法 cl
阅读全文
摘要:为什么要用序列化 当我们做前后端分离的项目时,前后端交互一般都是JSON格式的数据,那么我们给前端的数据就要转为JSON格式,就需要我们拿到数据库后的数据进行序列化。在看DRF的序列化之前,先来看看django的序列化 from django.db import models # Create yo
阅读全文
摘要:前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不
阅读全文