登陸的裝飾器

def login_decorator(func):
    '''
    這個函數是一個登陸驗證的裝飾器,它還包含了對ajax登陸的驗證
    :param func: func是對誰去裝飾,這個參數是被裝飾的一個函數
    :return: 裝飾器裝飾事後,返回的一個新功能函數
    '''
    def login_handler(request,*args,**kwargs):
        if request.user.is_authenticated():
            return func(request,*args,**kwargs)
        else:
            if request.is_ajax():#這個方法能夠判斷當前的請求是否是ajax請求
                return JsonResponse({'status':'nologin'})
            url = request.get_full_path()
            # request.get_full_path()這個方法能夠獲取全的路徑,包含協議和ip、get請求參數
            #request.path它獲取的只是路徑部分,不包含協議和ip也不包含get請求參數
            ret = redirect(reverse('users:user_login'))
            ret.set_cookie('url',url)
            return retajax

    return login_handlercookie

相關文章
相關標籤/搜索