我正在尝试做类似的事情:
在 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 中传递额外参数的正确方法是什么?
最佳答案
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 - 基于 Django 类的 View 的反向 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594614/