过滤,排序,异常处理
摘要:过滤 drf自己原生的过滤不能根据外键字段来过滤,django_filter支持外键字段来过滤 1. # 安装django_filter 2. # 在项目配置文件的APP中注册 INSTALLED_APPS = [ ... 'django_filters', ] 3. # 全局配置或局部配置 RES
阅读全文
频率
摘要:# 在项目配置文件中全局配置 REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': [ # 针对匿名用户,限制访问频率 'rest_framework.throttling.AnonRateThrottle', # 针对登录用户 'rest_framework
阅读全文
pip换源
摘要:采用国内源,加快下载模块的速度 # 临时使用一次指定的源 pip3 intall -i 指定的url 模块名 # 永久配置安装源 # 在windwos上 %APPDATA% # 直接到C:\Users\Administrator\AppData\Roaming 这个文件夹,在里面新建一个名为pip的
阅读全文
jwt
摘要:新的认证方式,由三部分组成:头header,payload(一些用户信息),签名 主要是防篡改, """ 1)jwt分三段式:头.体.签名 (head.payload.sgin) 2)头和体是可逆加密,让服务器可以反解出user对象;签名是不可逆加密,保证整个token的安全性 3)头体签名三部分,
阅读全文
认证
摘要:认证的实现 写一个类,继承BaseAuthentication,也可以不继承这个类,重写authenticate方法,认证的逻辑写在里面,认证通过,返回两个值,一个值是user(可以自己生成,也可以去查数据库获取),最终给了Request对象,认证失败,抛异常APIException(它是父类)或者
阅读全文
视图集
摘要:视图集 ModelViewSet继承了5个视图扩展类和GenericViewSet class ModelViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.Destr
阅读全文
Request对象和Response对象
摘要:Request里面有_authenticate方法,user,auth,data这几个方法被装饰成了属性,当取前两个属性的值的时候,如果有这个属性,就直接返回它的值 self._user self._auth,如果没有这个属性,就调用_authenticate方法,源码参见: https://www
阅读全文
APIView源码分析
摘要:from rest_framework.views import APIView class APIView(View): ... @classmethod def as_view(cls, **initkwargs): ... # super方法调用父类(也就是View)的as_view方法,这个
阅读全文
BaseSerializer部分源码
摘要:修改数据的过程 调用序列化对象的save方法:book_ser.save(),通过属性查找,找到了BaseSerializer里面的save方法 在BookSerializer类里面重写它的父类Serializer的父类BaseSerializer的update方法,在update方法中调用模型类对
阅读全文
django基本操作
摘要:django基本操作(在命令行操作) 创建一个新django项目: 先切换到想要存放项目文件夹的目录,然后执行以下代码 django-admin startproject mysite1 mysite1为项目名称,即项目文件夹名称, 启动django项目 要先切换到项目文件夹目录中 cd D:\Pr
阅读全文
Ajax
摘要:Ajax 例子:github注册页面 异步提交,提交以后不等待 局部刷新 向后端发送请求的方式 什么请求 浏览器地址栏输入url回车 GET a标签的href属性 GET form表单 GET/POST Ajax GET/POST 学jQuery封装之后的版本,在前端页面使用ajax的时候需要确保导
阅读全文
forms组件
摘要:forms组件 forms组件能够完成的事情: 渲染标签 校验数据 展示提示信息 前端数据校验可有可无,后端据校验必须要有 因为可以修改前端的数据,或者利用爬虫程序绕过前端页面直接向后端提交数据 forms组件校验数据 class MyForm(forms.Form): username=forms
阅读全文
csrf相关装饰器(视图类CBV如何添加装饰器)
摘要:网站整体不校验,只有几个需要校验 网站整体校验,只有几个不需要校验 CBV中加装饰器的三种方式 装饰器csrf_protect 装饰器csrf_exempt 在类中直接加在某个函数上 有效 无效 在类头顶上给某个函数加 有效 无效 给dispatch函数加 有效 有效 csrf_protect和cs
阅读全文
Auth模块
摘要:用Auth模块就用全套,该模块默认使用auth_user表,django的admin后台管理也用auth_user表 以下代码中有以下方法 auth.authenticate(request,username=username,password=password) 1.自动查找auth_user表
阅读全文
django中间件
摘要:django中间件 django自带7个中间件,每个中间件都有各自的功能,还支持自定义中间件并且提供5个可以自定义的方法 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.
阅读全文
模型层
摘要:模型层 sqlite3数据库对日期格式不是很敏感,处理的时候容易出错 register_time=models.DateTimeField(auto_now=True) #年月日时分秒格式 register_time=models.DateField(auto_now_add=True) #年月日格
阅读全文
视图层
摘要:视图层 视图函数必须要返回一个HttpResponse对象 request对象方法 request.method #返回的是全大写字符串 def login(request): if request.method=='POST': #request.POST获取用户POST请求提交的普通键值对,不包
阅读全文
路由层
摘要:路由层 路由匹配 path是精确匹配,re_path是正则匹配 取消自动加斜杠 APPEND_SLASH = False django 路由匹配的时候其实可以匹配两次,第一次如果url后面没有加斜杠,django会让浏览器加斜杠再发送一次请求 无名分组 就是将括号内正则表达式匹配到的内容当做位置参数
阅读全文
django请求生命周期流程图
摘要:web服务网关接口 WSGI是协议 wsgiref和uwsgi是 基于WSGI协议 实现的功能模块 django自带的wsgiref 能承受的最大 并发量在1000左右 上线后会换成uwsgi 并且有nginx反向代理 图片地址 https://www.freesion.com/images/171
阅读全文
django ORM
摘要:django ORM 缺点:封装程度太高,有时候sql语句的效率偏低 ORM能够让一个不会sql语句的python程序员也能够简单快捷地操作数据库 类 表 对象 记录 对象属性 记录字段 去应用下的models.py文件中书写模型类,用来创建数据表, orm不会创建数据库 from django.d
阅读全文