2

我想使用反向将额外的选项传递给 django URL,但我不想在 URL 中显示这些参数

我尝试了下面提到的代码,但没有运气,抛出NoReverseMatch异常。

网址.py

urlpatterns = patterns('',
    url(r'^foo-direct/', 'myapp.views.someview', {'wo_id': 1}, name='foo-direct'),
)

视图.py

return HttpResponseRedirect(reverse('foo-direct', kwargs={'wo_id':2}))

如果我做错了什么,请提出建议。

更新

如何在浏览器(url)中不显示参数的情况下实现?

我的视图函数接受多个参数,我想传递这些多个参数,因此我不想在 URL 中显示所有参数

4

2 回答 2

0

只需从反向函数中删除 kwargs 参数 -

return HttpResponseRedirect(reverse('foo-direct')

更新

wo_id除非您wo_id在 URL 中包含 ,否则您将无法将反向与动态一起使用。reverse 函数会查看您的 url conf 中的所有 url。它会查找带有 , 和匹配 , 的argsurl kwargsname并且argskwargs传递namereverse. 当它找到匹配项时,它会返回相应的函数(视图)。

我不知道您为什么不希望 wo_id 在您的 url 中,因此很难提出建议,但是,如果您试图保持 url 的描述性,那么也许您可以考虑使用 slug 字段而不是 id .

于 2013-03-04T08:52:49.690 回答
-1

这没有任何意义。如果不通过 URL,就无法将动态参数传递给视图。它将如何到达那里?当用户实际访问该 URL 时,Django 怎么知道要使用什么参数?

于 2013-03-04T08:54:27.120 回答