Django/python: 'function' 对象没有属性 'as_view'

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

我正在尝试为模型查询集创建 list_view。当 运行 我的服务器时,它 returns : 属性错误 - 'function' 对象没有属性 'as_view'。如果能帮我解决这个问题,我将不胜感激。

这是我的代码:

Views.py:

@login_required 
class live_bids(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)

urls.py:

 url(r'^live_bids/$', live_bids.as_view()),

你不能像这样在 class 上使用 login_required 装饰器。您需要使用 method_decorator。在 Django 1.9+ 上,你可以装饰 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):
    ...

在早期版本中,您需要覆盖 dispatch 并在那里使用 method_decorator

class LiveBids(LoginRequiredMixin, ListView):
    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(LiveBids, self).dispatch(*args, **kwargs)

最简单的解决方案是使用 LoginRequiredMixin 而不是装饰器(适用于 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)

请注意,在示例中,我已将视图重命名为 LiveBids,以匹配推荐的 Django 样式。您还必须更新 url 模式。