【问题标题】:Django 1.3 passing parameters to filter of class-based generic list view in url.pyDjango 1.3 将参数传递给 url.py 中基于类的通用列表视图的过滤器
【发布时间】:2011-09-03 04:11:09
【问题描述】:

这是我在 url.py 中的代码:

(r'^tag/(?P<tag>\w+)/$',
    ListView.as_view(
        model=List,
        context_object_name='some_list',
        queryset=List.objects.filter(tag__name__in=[tag_name]),
        template_name='some_list.html'))

我想将(?P&lt;tag&gt;\w+) 传递给“tag_name”过滤器,但我不知道该怎么做。

另外我怎样才能传递多个标签?像这样:

http://www.mysite.com/tag/tag1+tag2+tag3

url.py 应该得到“tag1+tag2+tag3”,将其拆分为“tag1”、“tag2”和“tag3”,然后将它们放入“tag__name__in”中:

queryset=List.objects.filter(tag__name__in=[tag1, tag2, tag3])

基本上我对基于类的通用视图感到困惑。有什么想法吗?

【问题讨论】:

    标签: regex django url view tags


    【解决方案1】:

    您可以覆盖视图的get_queryset 方法并使用您的结果构造一个查询集,例如。

    from django.views.generic.list import ListView
    
    class MyList(ListView):
        def get_queryset(self):
            tag_list = self.kwargs['tags'].split('+')
            return List.objects.filter(tag__name__in=tag_list)
    
    # urls.py
    ...
    url(r'tag/(?<tags>[\w\+]+)/', MyList.as_view())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2014-01-08
      • 2016-07-28
      • 2013-01-09
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多