django中间件和auth模块

django中间件

首先django自带7个中间件,每个中间件都有各自对应的功能

并且django还支持程序员自定义中间件

在用django开发项目的时候,只要涉及到全局相关的功能都可以使用中间件方便的完成

  • 全局用户身份校验
  • 全局用户权限校验
  • 全局访问频率校验

django中间件是django的门户

        1. 请求来的时候需要先经过中间件才能够到达真正的django后端

        2. 响应走的时候最后也需要经过中间件才能发送出去

django请求声明周期流程图

 研究django中间件代码规律

MIDDLEWARE = [
    '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',
]

django支持自定义中间件并且暴露5个可以自定义的方法

        1. 必须要掌握

                process_request

                process_response

        2. 了解即可

                process_view

                process_template_response

                process_exception

如何自定义中间件

1. 在项目名或者应用名下创建一个任意名称的文件夹

2. 在该文件夹内创建一个任意名称的py文件

3. 在该py文件内需要书写类(这个类必须继承MiddleMixin)

        然后在这个类里面就可以自定义5个方法了

        (这5个方法并不是全部都需要书写,用几个写几个)

4. 需要将类的路径以字符串的形式注册到配置文件中才能生效

MIDDLEWARE = [
    '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',
    '自己写的中间件的路径',
    '自己写的中间件的路径',
]

1. 必须要掌握

        process_request

                1. 请求来的时候需要经过每一个中间件里面的process_request方法

                经过的顺序是按照配置文件中注册的中间件从上往下的顺序依次执行

                2. 如果中间件里面没有定义该方法,那么直接跳过执行下一个中间件

                3. 如果该方法返回了HttpResponse对象,那么请求将不再继续往后执行

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值