Django:基于类视图的装饰器

时间:2016-10-26 11:48:02

标签: python django python-2.7 python-decorators django-1.4

我想限制对特定视图的访问,以便只接受AJAX请求,所以我实现了以下装饰器:

\"created_at\": \"\\u0000\\u0001\\ufffdM\\u0015q\\ufffd}\"

这在函数视图中非常有效,但我无法弄清楚如何在基于类的视图中使用它。我已经尝试了this但是出现了错误,我认为是因为我正在使用的旧版Django。

好吧,我基于班级的观点:

def require_ajax(func):
    def decorator(func):
        def inner(request, *args, **kwargs):
            if not request.is_ajax():
                return HttpResponseBadRequest()
            return func(request, *args, **kwargs)
        return inner

    return decorator

1 个答案:

答案 0 :(得分:0)

以不同的方式实现装饰器解决了这个问题:

def require_ajax(func):
    def decorator(request, *args, **kwargs):
        if not request.is_ajax():
            return HttpResponseBadRequest()
        return func(request, *args, **kwargs)

    return decorator