django - 基于 Django 类的 View 的反向 url

标签 django django-views django-urls django-class-based-views

我正在尝试做类似的事情:

在 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/

相关文章:

python - 如何在Django 1.9中实现修改密码表单

django - 一个 View 中的多个 django 应用程序

python - Python/Django 中 PHP "ob"函数的等效函数

python - Django admin datetime `now` 按钮选择正确的本地时间,但服务器时间错误

django - Django 模板中的动态分页

python - django-在另一个预取相关内部使用预取相关

Django 2 : path ('^$' , 主页,名称 ='home')不工作

python - 在 Django 中通过 URL 传递静态字符串参数(模型选择)?

python - 无反向匹配错误。未找到 '...' 的反向

python - mod_wsgi 3.4 错误,其中 404 错误被误解