Даже если это класс, почему AttributeError: 'function' object has no attribute 'as_view'
несмотря на то, что функция основана на вызовах, почему эта ошибка атрибута выскакивает, когда я использую login_required
Сообщение об ошибке
path('active/<int:pk>', UpdateActiveStatus.as_view(), name="activeStatus"),
AttributeError: 'function' object has no attribute 'as_view'
views.py
@login_required(login_url='/admin/')
class UpdateActiveStatus(UpdateView):
model = FutsalTimeline
form_class = UpdateActiveStatus
template_name = 'timeline.html'
success_url = reverse_lazy('timeline')
Вы не можете использовать декоратор @login_required
[Django-doc]: этот декоратор возвращает функцию, но даже использование функции не сработает: декоратор просто не может обрабатывать класс.
Для представлений на основе классов вы используете LoginRequiredMixin
[Django-doc]:
from django.contrib.auth.mixins import LoginRequiredMixin
class UpdateActiveStatus(LoginRequiredMixin, UpdateView):
model = FutsalTimeline
form_class = UpdateActiveStatus
template_name = 'timeline.html'
success_url = reverse_lazy('timeline')
login_url = '/admin/'
Я думаю, что проблема генерируется для decorator. Просто измените его как ->
@method_decorator(login_required, name='dispatch')
class UpdateActiveStatus(UpdateView):
model = FutsalTimeline
form_class = UpdateActiveStatus
template_name = 'timeline.html'
success_url = reverse_lazy('timeline')
Вы можете найти документ здесь
Но вы должны использовать Mixin classes. С Mixin class Это будет выглядеть как
.from django.contrib.auth.mixins import LoginRequiredMixin class UpdateActiveStatus(LoginRequiredMixin, UpdateView): model = FutsalTimeline form_class = UpdateActiveStatus template_name = 'timeline.html' success_url = reverse_lazy('timeline')
Вы можете найти документ здесь