4

我正在尝试使用通用视图显示特定作者的博客记录:

urlpatterns = patterns('',
    url(r'^blog/(?P<uid>[\d+])/$', ListView.as_view(
        queryset=Blog.objects.filter(published=True, author=uid),
    ), name='blog_list'),

但我得到NameError: name 'uid' is not defined

是否可以以这种方式使用 urlconf 命名组?

4

1 回答 1

3

您需要像这样创建自己的 ListView 实现:

class BlogListView(ListView):
    model = Blog

    def get_queryset(self):
        return super(BlogListView, self).get_queryset().filter(
            published=True, author__id=self.kwargs['uid'])

然后在你的 URLconf 中使用它:

urlpatterns = patterns('',
    url(r'^blog/(?P<uid>[\d+])/$', BlogListView.as_view(),
        name='blog_list'),

在我看来,基于类的通用视图的文档还不能完全满足 Django 项目的其余部分 - 但有一些示例展示了如何以ListView这种方式使用:

https://docs.djangoproject.com/en/1.3/topics/class-based-views/#viewing-subsets-of-objects

于 2012-06-23T21:40:01.733 回答