将捕获的命名正则表达式传递给通用视图中的URL字典

时间:2010-04-22 03:36:43

标签: django-urls

我正在使用Django中的通用视图。我想捕获URL中的命名组参数,并将值传递给URL模式字典。例如,在下面的URLConf中,我想捕获URL中的parent_slug值并将其传递给queryset字典值,如下所示:

urlpatterns = patterns('django.views.generic.list_detail',
    (r'^(?P<parent_slug>[-\w]+)$',
     'object_list',
     {'queryset':Promotion.objects.filter(category=parent_slug)},
     'promo_promotion_list',
    ),
                      )

这可以在一个URLConf条目中执行,或者如果我创建一个自定义视图来捕获值并将查询集从我的重写视图直接传递给通用视图,它会更明智吗?

1 个答案:

答案 0 :(得分:2)

我在urls.py中做了一些重定向,如下所示,也许这对你有用吗?

from django.views.generic.base import RedirectView
urlpatterns = patterns('',
    (r'^manual/glossary/(?P<slug>[^/]+)/$',
        RedirectView.as_view(url='/glossary/%(slug)s/')),
)

但是,所有基于类的通用视图似乎都不支持:

from django.views.generic.list import ListView
urlpatterns = patterns('',
    (r'^tag/(?P<tag>\d+)/$',
        ListView.as_view(
            queryset=Blog.Post.objects.filter(tags='%(tag)d'),
            paginate_by=5)),
)

第二个代码片段不起作用,因此您必须修补通用ListView或通过您提议的自定义视图传递。