37👍
✅
You can’t use the login_required
decorator on a class like that. You need to use method_decorator
. On Django 1.9+, you can decorate the class:
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):
...
On earlier versions, you need to override dispatch
and use method_decorator
there.
class LiveBids(LoginRequiredMixin, ListView):
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(LiveBids, self).dispatch(*args, **kwargs)
The easiest solution is to use LoginRequiredMixin
instead of the decorator (works with 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)
Note that in the examples, I have renamed the view to LiveBids
, to match the recommended Django style. You’ll have to update the url pattern as well.
Source:stackexchange.com