Django/python: 'function' object has no attribute 'as_view'

后端 未结 1 608
面向向阳花
面向向阳花 2020-12-29 09:07

I am trying to create a list_view for a model queryset. When running my server, it returns : attribute error - \'function\' object has no attribute \'as_view\'. I would appr

1条回答
  •  执笔经年
    2020-12-29 09:41

    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.

    0 讨论(0)
提交回复
热议问题