2012-06-23 18 views
3

我試圖使用通用視圖來顯示特定作者博客記錄:如何使用具有通用視圖的命名組?

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

,但我得到NameError:名字爲「uid」是沒有定義

是否有可能使用URL配置命名組這條路?

回答

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

+0

謝謝,這就是我需要的! –

相關問題