0
Я хочу, чтобы ограничить доступ к определенной точки зрения, так что принимаются только 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
Это отлично работает в представлениях функций, но я не может понять, как использовать его в классах. Я пробовал this, но получил ошибки, полагаю, из-за старой версии Django, которую я использую.
И хорошо, мой класс, основанный на вид:
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)
Какие ошибки в точности? Не может помочь вам, не зная проблемы. Использование метода method_decorator - это подход OK, однако вы можете проверить документацию для этой формы метода Django 1.4. https://django.readthedocs.io/en/1.4/topics/class-based-views.html?highlight=method_decorator#decorating-the-class – makaveli
Вам нужно будет создать микширование для CBV - Точно так же 'login_required 'и' LoginRequiredMixin' работает – Sayse
@makaveli ошибка только о kwargs, она говорит, что есть неожиданные kwargs (которые я использую в 'get_context_data'). – dabadaba