Vous ne pouvez pas utiliser le décorateur login_required
sur une classe comme ça. Vous devez utiliser method_decorator
. Sur Django 1.9+, vous pouvez décorer la classe:
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
@method_decorator(login_required, name='dispatch')
class LiveBids(LoginRequiredMixin, ListView):
...
Sur les versions antérieures, vous devez passer outre dispatch
et y utiliser method_decorator
.
class LiveBids(LoginRequiredMixin, ListView):
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(LiveBids, self).dispatch(*args, **kwargs)
La solution est d'utiliser plus facile LoginRequiredMixin
au lieu du décorateur (fonctionne avec Django 1.9+)
from django.contrib.auth.mixins import LoginRequiredMixin
class LiveBids(LoginRequiredMixin, ListView):
model = Post
template_name = 'loggedin_load/live_bids.html'
def get_queryset(self):
return Post.objects.all().prefetch_related('bids').filter(user=self.request.user)
Notez que dans les exemples, j'ai renommé en vue de LiveBids
, pour correspondre à la recommandation Style Django. Vous devrez également mettre à jour le modèle d'URL.
Y at-il un moyen de le faire pour flacon? –
@JohnSmith cette question n'a rien à voir avec flacon. S'il vous plaît poser une nouvelle question. – Alasdair
[fait] (https://stackoverflow.com/questions/46932366/how-to-use-login-required-with-a-class-in-flask) –