zoukankan      html  css  js  c++  java
  • Django之中间件

    中间件

    • 中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
    • 激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中
    • 使用中间件,可以干扰整个处理过程,每次请求中都会执行中间件的这个方法

    验证用户是否登陆示例

    在应用中创建AdminLoginMiddleware.py文件

    from django.shortcuts import render
    from django.http import HttpResponse
    import re
    
    class AdminLoginMiddleware:
        def __init__(self, get_response):
            self.get_response = get_response
            # One-time configuration and initialization.
    
        def __call__(self, request):
    
    
            # 检测当前的请求是否已经登录,如果已经登录,.则放行,如果未登录,则跳转到登录页
            # 获取当前用户的请求路径  /admin/开头  但不是 /admin/login/  /admin/dologin/   /admin/verifycode
            urllist = ['/admin/login','/admin/dologin','/admin/vcode']
            # 判断是否进入了后台,并且不是进入登录页面
            if re.match('/admin/',request.path) and request.path not in urllist:
    
                # 检测session中是否存在 adminlogin的数据记录
                if request.session.get('Vuser','') == '':
                    # 如果在session没有记录,则证明没有登录,跳转到登录页面
                    return HttpResponse('<script>alert("请先登录");location.href="/admin/login";</script>')
    
    
    
            response = self.get_response(request)
            return response
    

    配置中间件

    在settings.py文件中修改MIDDLEWARE_CLASSES选项

    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',
        #自定义的中间件
        'myadmin.AdminMiddleware.AdminLoginMiddleware'
    ]
    
  • 相关阅读:
    JDBC
    两道关于回溯法,分支限界法的算法题
    旅行售货员问题
    jdbc学习
    mysql简单练习
    取会邮件客户端中的密码
    触发器的使用
    事务的数据一致性测试
    读取其他软件listview控件的内容
    sqlserver2008 ,只能选C盘目录,不能选其它盘目录
  • 原文地址:https://www.cnblogs.com/victorfengming/p/11930959.html
Copyright © 2011-2022 走看看