将args传递给URL,但不希望它显示在django中的URL中

时间:2013-03-04 08:17:05

标签: python django django-forms django-views

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

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

urls.py

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

views.py

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

如果我做错了,请建议。

更新

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

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

2 个答案:

答案 0 :(得分:0)

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

return HttpResponseRedirect(reverse('foo-direct')

更新

除非您在网址中加入wo_id,否则您无法对动态wo_id使用反向操作。反向函数查看url conf中的所有url。它会查找与argskwargsname匹配的网址,其中argskwargsnamereverse相匹配}}。当找到匹配时,它返回相应的函数(视图)。

我不知道为什么你不想把你的wo_id放在你的网址中,所以很难提出建议,但是,如果你想保留你的网址的描述,那么也许你可以看看使用slug字段代替一个身份。

答案 1 :(得分:-1)

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