python-django常用小知识
本专栏主要用来记录学习工作中遇到的django框架相关的小知识点,如有错误望大家不吝赐教.
爱学习的狮王
既然选择了远方,便只顾风雨兼程!!!
展开
-
Django优化(减少数据库查询次数)---select_related和prefetch_related的使用
在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能。本文通过一个简单的例子从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式。0.初始化打开log调试,在setting中加入LOGGING = { 'version':1, 'disable...原创 2019-07-10 19:19:04 · 1252 阅读 · 0 评论 -
drf的序列化递归深度问题
当序列化某些外键时,返回的只是我们外键所对应的id,这时如果我们想要显示外键对应的详细信息应该如何做到呢?两种方法:一种是 外键name = 外键类Serializer(many=True, read_only=True)另外一种是在 序列化类里面的 class Meta: 下加一句 depth=1第一种方法适用于我们想要序列化字段中的某一个外键,第二种方法是要将我们要序列化中所有字...原创 2019-03-29 10:33:58 · 1739 阅读 · 0 评论 -
Django-restframework之视图类详解
视图:视图函数继承表 |->mixins.CreateModelMixin, POST创建 |->mixins.RetrieveModelMixin, Retrieve(get)显示单条 ModelViewSet |->mixins.UpdateModelMixin, put,patch更新 ...原创 2018-12-11 16:05:59 · 416 阅读 · 0 评论 -
restframework中的分页
rest_framework中的分页:数据量很大时,原生sql的分页查询当数据量越来越大,对数据库的压力也越来越大,在rest_framework中分页可以记住当前页最大值,最小值,当下次分页根据大于或者小于他记住的值来做,但是url中可以用户自己输入多少页,所以可以使用CursorPagination类对页码进行加密。from rest_framework.pagination impo...原创 2018-12-11 15:40:07 · 614 阅读 · 0 评论 -
restframework单元测试
示例代码:from rest_framework import statusfrom rest_framework.serializers import Serializerfrom rest_framework.test import APITestCasefrom apps.models import Userclass UserAPITests(APITestCase):# 此测...原创 2018-12-11 10:17:19 · 1190 阅读 · 0 评论 -
restframework--序列化
序列化一:序列化1、写类,可以继承Serializer或者ModelSerializer使用这种方式序列化时,对于特殊字段(一对多ForeignKey、多对多ManyToMany),serializers没有提供对应的字段,需要指定特殊的方式,因为obj.这个字段时,得到的是一个对象,所以我们对于ForeignKey,需要使用一个CharField字段,然后在这个字段中指定一个source属...原创 2018-12-09 21:58:05 · 401 阅读 · 0 评论 -
DRF的访问频率控制源码分析及应用
一:restframework的访问频率控制源码分析1、还是首先访问dispatch2、进入initial中,self.check_throttles(request):实现频率控制,进去看源码3、for throttle in self.get_throttles():又是一个循环遍历4、进去self.get_throttles(),还是一个列表生成式,返回的是一个类的实例的列表ret...原创 2018-12-09 14:06:26 · 446 阅读 · 0 评论 -
权限验证代码详解及自定义权限验证类
一、权限认证源码详解1、进入dispatch2、initial中self.check_permissions(request)进行权限验证3、进入check_permissionsfor permission in self.get_permissions():4、进入get_permissions返回一个权限类的对象列表[permission() for permission in...原创 2018-12-08 22:52:00 · 1429 阅读 · 1 评论 -
restframework的内置认证类
restframework的内置认证类认证类必须继承:from rest_framework.authentication import BaseAuthentication其他认证类:from rest_framework.authentication import BasicAuthenticationfrom rest_framework.authentication import ...原创 2018-12-07 23:47:55 · 201 阅读 · 0 评论 -
rest framwork之登录验证源码解析
登录认证流程1、请求进来先找APIView的dispatch2、对request进行了封装Request( request, parsers=self.get_parsers(), authenticators=self.get_authenticators(),#[BasicAuthentication()对象,] ...原创 2018-12-07 23:34:16 · 554 阅读 · 0 评论 -
restful
以下是设计REST API的提示,建议和建议,使您的用户满意。引用自:API design1.了解应用于REST的HTTP的基础知识如果您要构建设计良好的REST API,您最好了解HTTP协议的基础知识。我真的相信这将有助于您做出更好的设计决策。我发现MDN Web文档上的HTTP概述对此非常好。但是,就REST API设计而言,这里是TL; 应用于REST的HTTP的 DR :HTT...原创 2018-12-06 10:13:07 · 311 阅读 · 0 评论 -
Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField
关联关系字段 (Relationship fields)ForeignKey,ManyToManyField与OneToOneField分别在Model中定义多对一,多对多,一对一关系。例如,一本书由一家出版社出版,一家出版社可以出版很多书。一本书由多个作者合写,一个作者可以写很多书。class Author(models.Model): name=models.CharField(...原创 2019-01-05 15:06:46 · 534 阅读 · 0 评论 -
restframework--解析器
解析器1、Django的中的request.POST/request.body1、如果请求头中的Content-Type:application/x-www-form-urlencoded,request.POST中才有值(去request.body中解析数据)2、数据格式要求:name=xiaoming&age=18&num=12345678如:form表单提交默认为C...原创 2018-12-09 16:24:07 · 371 阅读 · 0 评论 -
JWT
什么是JWT(JSON WEB TOKEN)转自于:http://www.jianshu.com/p/576dbf44b2ae什么是JWTJson web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被...转载 2018-12-05 19:54:47 · 132 阅读 · 0 评论 -
django中Appconfig
django的project由多个app组成。project的设置由setting指定,而每个app的设置由AppConfig指定。app和project主要由INSTALL_APPS联系,也有url和middleware等等.AppConfig的属性通过__init__初始化的属性:name: app的路径名module: app的模块def __init__(self, app_na...原创 2018-12-05 19:09:33 · 5171 阅读 · 0 评论 -
ManytoMany字段属性through和through_fields
ManyToManyField¶classManyToManyField(to,** options)[source] ¶多对多的关系。需要一个位置参数:与模型相关的类,它与它的作用完全相同 ForeignKey,包括递归和 惰性关系。可以使用字段添加,删除或创建相关对象 RelatedManager。数据库表示¶在幕后,Django创建了一个中间连接表来表示多对多关系。默认情况下,此表...原创 2018-12-04 19:08:59 · 2907 阅读 · 0 评论 -
django中的models的常用字段及属性
django 模型models 常用字段1、models.AutoField 自增列 = int(11)如果没有的话,默认会生成一个名称为 id 的列如果要显式的自定义一个自增列,必须设置primary_key=True。2、models.CharField 字符串字段 必须设置max_length参数3、models.BooleanField 布尔类型=tinyint(...转载 2018-12-04 17:58:24 · 2764 阅读 · 1 评论 -
Django Ajax跨域问题解决方案
跨域调用首先下载这个插件pip install django-cors-headers然后在你的Django项目中的settings.py中做如下配置(install app和middleware):INSTALLED_APPS = (…‘corsheaders’,…)MIDDLEWARE = [ # Or MIDDLEWARE_CLASSES on Django < 1...转载 2018-11-25 11:52:33 · 551 阅读 · 0 评论 -
django跨站保护机制和CSRF
CSRF:Cross-site request forgery,叫做跨站请求伪造,是指伪装来自受信任用户的请求来利用受信任的网站完成攻击。下面是我在网上看到的一个比较好的通俗的解释:受害者 Bob 在银行有一笔存款,通过对银行的网站发送请求 http://bank.example/withdraw?account=bob&amp;amount=1000000&amp;for=bob2 可以使 ...转载 2018-11-23 18:47:38 · 215 阅读 · 0 评论