自定义登陆限制装饰器@login_required


发布时间:2019-02-15 13:08    作者: Uncle Hui   已过去:1 年,5 月   阅读总量:354 已被赞:0


django自带的@login_required 登陆限制装饰器,不支持ajax传输数据,因此,我们需要自定义一个装饰器:

1.在项目适当位置新建一个py文件:

from utils import restful #自己封装的json返回提示代码
from django.shortcuts import redirect #重定向
 

def xfz_login_required(func):#定义一个装饰器,传递进一个函数(传的函数就是要被限制的视图函数)
    def wrapper(request,*args,**kwargs):#定义一个函数,接收任何内容
        if request.user.is_authenticated: #如果用户被授权
            return func(request,*args,**kwargs) #直接返回这个函数和内容
        else:
            if request.is_ajax(): #否则判断下是否是ajax,是就提示先登录
                return restful.unauth(message='请先登录!')
            else:
                return redirect('/') #重定向首页

    return wrapper #返回这个函数

2.如何使用:

a.  在需要使用的地方引入

b.  @xfz_login_required

3.js里优化:

如果用户没有登录,后台会传非200的code过去,就打印这个提示:

 'success': function (result) {
                console.log(result);
                if(result['code'] === 200){
                    var comment = result['data'];
                    var tpl = template('comment-item',{"comment":comment});
                    var commentListGroup = $(".comment-list");
                    commentListGroup.prepend(tpl);
                    window.messageBox.showSuccess('评论发表成功!');
                    textarea.val("");
                }else{
                    window.messageBox.showError(result['message']);
                }
            }

点赞

0




登陆后方可评论