Django/python:'function'对象没有属性'as_view'
Posted
技术标签:
【中文标题】Django/python:\'function\'对象没有属性\'as_view\'【英文标题】:Django/python: 'function' object has no attribute 'as_view'Django/python:'function'对象没有属性'as_view' 【发布时间】:2016-12-08 00:59:42 【问题描述】:我正在尝试为模型查询集创建一个 list_view。运行我的服务器时,它返回:属性错误-'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()),
【问题讨论】:
【参考方案1】:你不能在这样的类上使用 login_required
装饰器。您需要使用method_decorator
。在 Django 1.9+ 上,你可以装饰类:
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 模式。
【讨论】:
烧瓶有没有办法做到这一点? @JohnSmith 这个问题与烧瓶无关。请提出一个新问题。 done 这非常有用!谢谢@Alasdair以上是关于Django/python:'function'对象没有属性'as_view'的主要内容,如果未能解决你的问题,请参考以下文章
Python的Django框架完成一个完整的论坛(源码以及思路)
RuntimeError: 无法对关闭的处理程序执行操作。 Django 和颤振
使用 django python-social-auth 重定向后会话值丢失
初试django---python manage.py makemigrations以及python manage.py migrate