您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django身份验证和Ajax-需要登录的URL

Django身份验证和Ajax-需要登录的URL

我正面临着同样的问题,并且像你一样,我想要一个简单的装饰器来包装Django ajax视图,以便以与其他视图相同的方式处理身份验证。对我来说似乎有希望的一种方法是将这种装饰器与JavaScript结合使用,以在响应中寻找特定值。

这是装饰器的第一个修订草案:

from functools import wraps

def ajax_login_required(view_func):
    @wraps(view_func)
    def wrapper(request, *args, **kwargs):
        if request.user.is_authenticated():
            return view_func(request, *args, **kwargs)
        json = simplejson.dumps({ 'not_authenticated': True })
        return HttpResponse(json, mimetype='application/json')
    return wrapper

这是视图:

@ajax_login_required
def ajax_update_module(request, module_slug, action):
    # Etc ...
    return HttpResponse(json, mimetype='application/json')

这是JavaScript(jQuery):

$.post('/restricted-url/', data, function(json) {
    if (json.not_authenticated) {
        alert('Not authorized.');  // Or something in a message DIV
        return;
    }
    // Etc ...
});

编辑:我已尝试使用functools.wraps,如建议的那样。我实际上并未在工作代码中使用此装饰器,因此请注意可能的错误

Go 2022/1/1 18:23:04 有328人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶