[英]login_required decorator on a class based view in django
我有一個基於工人階級的觀點。 但是在添加@login_required 時出現錯誤:
AttributeError: 'function' 對象沒有屬性 'as_view'
這里的 ResultListView 發生了一些事情:
from django.urls import path
from .views import ResultListView
urlpatterns = [
path('meetings/', ResultListView.as_view(), name='meetings'),
]
我的意見.py:
@login_required
class ResultListView(ListView):
template_name = ...
def get_queryset(self):
return Result.objects.filter(rider__user=self.request.user)
在我將裝飾器放入之前,一切正常。現在非常困惑,我不明白為什么ResultListView在通過裝飾器發送時應該失去它的屬性。
@login_required
裝飾器只裝飾函數,而不裝飾類,您可以使用 mixin,或者裝飾作為.as_view()
調用結果的函數。
LoginRequiredMixin
您可以使用需要放在父類中的ListView
之前的LoginRequiredMixin
[Django-doc] :
from django.contrib.auth.mixins import LoginRequiredMixin
class ResultListView(LoginRequiredMixin, ListView):
template_name = …
def get_queryset(self):
return Result.objects.filter(rider__user=self.request.user)
.as_view()
結果另一種方法是裝飾.as_view
的結果,這確實是一個函數:
from django.urls import path
from .views import ResultListView
from django.contrib.auth.decorators import login_required
urlpatterns = [
path('meetings/', login_required(ResultListView.as_view()), name='meetings'),
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.