django框架创建一个需要检查用户是否登陆的中间键

  1. 在项目下面新建一个python文件用来写中间键。
    在这里插入图片描述
  2. 将官方文档的模版直接拷贝下来。
    文档地址
def simple_middleware(get_response):
    # One-time configuration and initialization.

    def middleware(request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response

    return middleware

其实就是相当于python中的装饰器,把需要登陆的页面放到一个集合中,修改键名,添加操作。


LOGIN_REQUIRED_URLS = {
    '/praise/',
    '/criticize/',
    '/stat/',
    '/data/',
    '/export/',
}


def check_login_middleware(get_response):
    def middleware(request, *args, **kwargs):
        if request.path in LOGIN_REQUIRED_URLS:
            if not request.session.get('userid'):
                if request.is_ajax():
                    from django.http import JsonResponse
                    return JsonResponse({'code': 10002, 'message': '请先登陆'})
                else:
                    from django.shortcuts import redirect
                    return redirect('/login/?hint=请先登陆')

        response = get_response(request, *args, **kwargs)
        return response

    return middleware

  1. 最后,中间键的位子千万不要放错了!!!
    检查用户是否登陆一定要放在SessionMiddleware的下面,否则会报错!!
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值