我想使用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中的所有参数
答案 0 :(得分:0)
只需从反向函数中删除kwargs参数 -
return HttpResponseRedirect(reverse('foo-direct')
更新
除非您在网址中加入wo_id
,否则您无法对动态wo_id
使用反向操作。反向函数查看url conf中的所有url。它会查找与args
,kwargs
和name
匹配的网址,其中args
,kwargs
和name
与reverse
相匹配}}。当找到匹配时,它返回相应的函数(视图)。
我不知道为什么你不想把你的wo_id放在你的网址中,所以很难提出建议,但是,如果你想保留你的网址的描述,那么也许你可以看看使用slug字段代替一个身份。
答案 1 :(得分:-1)
这没有任何意义。如果不通过URL,就无法将动态参数传递给视图。怎么会到那里?当用户实际访问该URL时,Django将如何知道要使用的参数?