基于 Django 类的视图的反向 url
Posted
技术标签:
【中文标题】基于 Django 类的视图的反向 url【英文标题】:reverse urls for Django class based view 【发布时间】:2012-01-25 13:08:59 【问题描述】:我正在尝试做类似的事情:
在 urls.py 中:
...
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs='foo:'')
...
在views.py中
..
HttpResponseRedirect(reverse('video_detail', kwargs='pk': id, 'foo':'bar'))
...
但这似乎不起作用。我得到一个 使用参数“()”和关键字参数“'pk':13240L,'foo':'bar'未找到'video_detail'。
但是这确实有效:
....
HttpResponseRedirect(reverse('video_detail', kwargs='pk': id))
...
即。从反向调用中删除 foo: bar 。执行此操作并在反向 url 中传递额外参数的正确方法是什么?
【问题讨论】:
【参考方案1】:reverse
是一个创建 URL 的函数。
因为您在 URL 模式中仅指定了 pk
模式,所以您只能使用 pk
作为 reverse
的参数(添加 foo
确实没有意义,因为生成的 url 正是任何foo
值都相同)。您可以将foo
添加到 URL 模式或创建多个命名 url,即:
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs='foo':'')
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs='foo':'bar')
或
url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail')
【讨论】:
以上是关于基于 Django 类的视图的反向 url的主要内容,如果未能解决你的问题,请参考以下文章
Django 基于类的视图上的 success_url 的反向抱怨循环导入