Django中间件、Auth认证
中间件
一:什么是中间件
是介于request与response处理之间的一道处理过程
二:中间件的作用
如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。
可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现。
默认的中间件如下,在settings配置文件中:
MIDDLEWARE = [
#settings里默认的中间件
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
#自定义添加的中间件
'app01.mymid.MyMid1',
'app01.mymid.MyMid2',
]
每一个中间件都有具体的功能
三:自定义中间件

第一步:导入MiddlewareMixin,新建的类必须继承它
from django.utils.deprecation import MiddlewareMixin
第二步:自定义中间件,新建一个自定义中间件的py文件例如下面的mymid.py,在里面自定义中间件类
#导入MiddlewareMixin模块
from django.utils.deprecation import MiddlewareMixin #自定义的类一定要继承MiddlewareMixin
class MyMid1(MiddlewareMixin):
def process_request(self,request):
print('MyMid1====process_request') def process_response(self, request, response):
print('MyMid1====process_response')
return response class MyMid2(MiddlewareMixin):
def process_request(self,request):
print('MyMid2====process_request') def process_response(self, request, response):
print('MyMid2====process_response')
return response

第三步:在view中定义一个视图函数(index),用于下面验证中间件与视图函数,输出的先后顺序
from django.shortcuts import render,HttpResponse,redirect # Create your views here. def index(request):
print("中间件")
return HttpResponse("中间件验证")
第四步:在settings.py的MIDDLEWARE里面注册自己定义的中间件

结果:
MyMid1====process_request #中间键的request请求是位于视图函数之前的
MyMid2====process_request
中间件
MyMid2====process_response
MyMid1====process_response
Performing system checks...
Auth认证:
第一步:加载自带的db.sqlite3数据库(加载自带的数据库文件)
E:\PycharmProjects\day中间件>python3 manage.py makemigrations
No changes detected #因为是用默认的,并没有再models里面做一些其他的更改 E:\PycharmProjects\day中间件>python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
...
第二步:

第三步:给auth_user插入用户数据信息,用于后面认证登录:
在terminal视口里面输入,在数据库里设置一个账号、密码:
python3 manage.py createsuperuser
E:\PycharmProjects\day中间件>python3 manage.py createsuperuser
Username (leave blank to use 'administrator'): yzz
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is entirely numeric. #密码会有复杂性要求
Password:
Password (again):
This password is too common.
This password is entirely numeric.
Password:
Password (again):
Superuser created successfully.
password:是加密的
is_superuser: 1表示管理员账号 0表示普通用户

Django中间件、Auth认证的更多相关文章
- django之auth认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- Django之auth认证
Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...
- Django之Auth认证模块
一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登陆,用户认证,注销修改密码等功能 ...
- django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块
CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...
- django中间件 csrf auth认证
django中间件 能做全局访问频率限制,身份校验,黑名单,白名单 用法: 新建一个文件夹,文件夹新建一个py文件,文件中写如下代码 注意点:你写的类必须继续MiddlewareMixin from ...
- csrf跨站请求伪造、csrf相关装饰器、auth认证模块、基于django中间件设计项目功能
目录 csrf跨站请求网站 什么是csrf跨站请求网站 经典例子-钓鱼网站 模拟 如何避免这种现象(预防) 如何在django中解决这个问题 form表单 ajax csrf相关装饰器 FBV CBV ...
- Django学习之九: auth 认证组件
目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...
- Django auth认证
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- Django框架详细介绍---中间件(认证)
一.绪论 在cookie和session的应用中,通过在视图函数内添加装饰器判断用户是否登录,把没有登录的用户请求跳转到登录页面,通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可 ...
随机推荐
- virtualapk爬坑心得
1.宿主和插件的工程build.gradle必须是 com.android.tools.build:gradle:2.1.3 gradle-wrapper 必须是 gradle-2.14.1-all ...
- countUp 动画展示数字变化
html <p id="countUp" style="font-size:25px;height:25px;background-color:#0aa;" ...
- jenkins只能同时构建2个Job怎么办?
在jenkins 构建任务时,同时只能构建2个,如果两个没有job没有结束,构建第3个就会不执行: 提示: pending—Waiting for next available executor on ...
- LoadRunner问题解决
1.问题:复制脚本,修改后并保存,直接在controller中加载脚本,无法创建用户,出现“Loadrunner Controller cannot create Vusers. Ensure th ...
- UVA 11997 K Smallest Sums (多路归并)
从包含k个整数的k个数组中各选一个求和,在所有的和中选最小的k个值. 思路是多路归并,对于两个长度为k的有序表按一定顺序选两个数字组成和,(B表已经有序)会形成n个有序表 A1+B1<=A1+B ...
- codeforces Gym 100286H Hell on the Markets
紫书上面的题,队友做的,WA了freopen..爆了int... UVA 1614 - Hell on the Markets 奇怪的股市(贪心,结论)
- 《队长说得队》【Alpha】Scrum meeting 5
项目 内容 这个作业属于哪个课程 >>2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 >>实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 ...
- 主成分分析法(PCA)答疑
问:为什么要去均值? 1.我认为归一化的表述并不太准确,按统计的一般说法,叫标准化.数据的标准化过程是减去均值并除以标准差.而归一化仅包含除以标准差的意思或者类似做法.2.做标准化的原因是:减去均值等 ...
- linux虚拟机配置网络
第一步.网络模式设置为桥接模式 第二步.设置ip和掩码 vim /etc/sysconfig/network-scripts/ifcfg-ens33 ens33为当前机器的网卡名称 在文件尾部添 ...
- 洛谷 P1228 【地毯填补问题】
事实上感觉四个的形状分别是这样: spj报错: 1:c 越界 2:x,y 越界 3:mp[x][y] 已被占用 4:mp[x][y] 从未被使用 题解: 初看这个问题,似乎无从下手,于是我们可以先考虑 ...