中间件

一:什么是中间件

介于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认证的更多相关文章

  1. django之auth认证系统

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  2. Django之auth认证

    Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...

  3. Django之Auth认证模块

    一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登陆,用户认证,注销修改密码等功能 ...

  4. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  5. django中间件 csrf auth认证

    django中间件 能做全局访问频率限制,身份校验,黑名单,白名单 用法: 新建一个文件夹,文件夹新建一个py文件,文件中写如下代码 注意点:你写的类必须继续MiddlewareMixin from ...

  6. csrf跨站请求伪造、csrf相关装饰器、auth认证模块、基于django中间件设计项目功能

    目录 csrf跨站请求网站 什么是csrf跨站请求网站 经典例子-钓鱼网站 模拟 如何避免这种现象(预防) 如何在django中解决这个问题 form表单 ajax csrf相关装饰器 FBV CBV ...

  7. Django学习之九: auth 认证组件

    目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...

  8. Django auth认证

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  9. Django框架详细介绍---中间件(认证)

    一.绪论 在cookie和session的应用中,通过在视图函数内添加装饰器判断用户是否登录,把没有登录的用户请求跳转到登录页面,通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可 ...

随机推荐

  1. python之map,zip,reduce,filter的用法

    1.reduce(func,iterable,initial): 参数: - func 可执行函数 - iterable 可迭代对象 - initial 可选,初始参数 功能描述:调用func函数后, ...

  2. C#中Image类与byte[]之间的转换

    //将image转化为二进制 public byte[] GetByteImage(Image img) { byte[] bt = null; if (!img.Equals(null)) { us ...

  3. Android商城开发系列(四)——butterknife的使用

    在上一篇博客:Android商城开发系列(三)——使用Fragment+RadioButton实现商城底部导航栏实现商城的底部导航栏时,里面用到了butterknife,今天来讲解一下的butterk ...

  4. UITableView设计思想 考察

    整体使用了build模式:单是组织结构混乱:不符合人类思维. UITableViewDataSource:描述了View的要素个数情况:并担负了builder功能. UITableViewDelega ...

  5. Ubuntu下手动安装NextCloud

    安装环境:阿里云VPS Ubuntu 16.04   一. 安装Apache2 sudo apt-get install apache2 安装完成后,浏览器访问http://your ip/,出现It ...

  6. Beta版本发布

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/?page=2 这个作业要求在哪里 <作业要求的 ...

  7. openstack keystone修改horizon密码

    命令行修改密码:token在/etc/keystone/keystone.conf中的一个admin_token export OS_SERVICE_TOKEN=165a1766c12a497b8fb ...

  8. 标签中的name属性和ID属性的区别

    标签中的name属性和ID属性的区别 2018年05月13日 10:17:44 tssit 阅读数:760   编程这么久,细想了一下,发现这个问题还不是很清楚,汗!看了几篇文章,整理了一下,分享下! ...

  9. JSON.stringify(value[, replacer[, space]])

    1. JSON.stringify(value[, replacer[, space]]);value 必需 对象或数组,需要转换成json字符串的数据replacer 可选 函数或数组space 可 ...

  10. 关于web安全--CSRF和XSS

    CSRF:跨站请求伪造. 攻击原理:一个用户登陆了可信的网站A,身份验证后A会下发一个cookie:此时用户又打开了另一个危险网站B,B引诱用户点击连接(该链接会访问A的接口),由于此时会携带cook ...