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

  1. 在项目下面新建一个python文件用来写中间键。
    django框架创建一个需要检查用户是否登陆的中间键_第1张图片
  2. 将官方文档的模版直接拷贝下来。
    [文档地址] (https://docs.djangoproject.com/zh-hans/2.2/topics/http/middleware/)
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的下面,否则会报错!!
    django框架创建一个需要检查用户是否登陆的中间键_第2张图片

你可能感兴趣的:(Python基础,django)