sum*_*nth 11 django django-urls django-views django-generic-views
我正在尝试为模型查询集创建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)
Run Code Online (Sandbox Code Playgroud)
urls.py:
url(r'^live_bids/$', live_bids.as_view()),
Run Code Online (Sandbox Code Playgroud)
Ala*_*air 27
你不能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):
...
Run Code Online (Sandbox Code Playgroud)
在早期版本中,您需要覆盖dispatch并method_decorator在那里使用.
class LiveBids(LoginRequiredMixin, ListView):
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(LiveBids, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是使用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)
Run Code Online (Sandbox Code Playgroud)
请注意,在示例中,我已将视图重命名为LiveBids,以匹配推荐的Django样式.您还必须更新网址格式.
| 归档时间: |
|
| 查看次数: |
10482 次 |
| 最近记录: |