Django:基于 class 的视图中的装饰器
Django: decorator in class based view
我想限制对特定视图的访问,以便只接受 AJAX 个请求,因此我实现了以下装饰器:
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
这在函数视图中完美运行,但我不知道如何在基于 class 的视图中使用它。我试过 this 但出现错误,我想是因为我使用的是旧版本的 Django。
好吧,我基于 class 的观点:
class AjaxView(TemplateView):
template_name = '...'
def get_context_data(self, **kwargs):
...
return context
@method_decorator(require_ajax)
def dispatch(self, *args, **kwargs):
return super(AjaxView, self).dispatch(*args, **kwargs)
以不同方式实现装饰器解决了问题:
def require_ajax(func):
def decorator(request, *args, **kwargs):
if not request.is_ajax():
return HttpResponseBadRequest()
return func(request, *args, **kwargs)
return decorator
我想限制对特定视图的访问,以便只接受 AJAX 个请求,因此我实现了以下装饰器:
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
这在函数视图中完美运行,但我不知道如何在基于 class 的视图中使用它。我试过 this 但出现错误,我想是因为我使用的是旧版本的 Django。
好吧,我基于 class 的观点:
class AjaxView(TemplateView):
template_name = '...'
def get_context_data(self, **kwargs):
...
return context
@method_decorator(require_ajax)
def dispatch(self, *args, **kwargs):
return super(AjaxView, self).dispatch(*args, **kwargs)
以不同方式实现装饰器解决了问题:
def require_ajax(func):
def decorator(request, *args, **kwargs):
if not request.is_ajax():
return HttpResponseBadRequest()
return func(request, *args, **kwargs)
return decorator