如何在包含 URL 的 django 中使用 reverse()?
Posted
技术标签:
【中文标题】如何在包含 URL 的 django 中使用 reverse()?【英文标题】:How to use reverse() in django on included URLs? 【发布时间】:2015-04-23 15:09:52 【问题描述】:我的 urls.py 大致如下:
...
url(r'^advance-day/$', 'mafia.views.advance_day', name='advance_day'),
url(r'^form/', include(form_urls)),
...
我最近将表单 URL 移至单独的 form_urls.py
,因为有很多表单,我不想让它们妨碍。但是,如果不使用视图的全名,我就无法弄清楚如何在它们上使用django.core.urlresolvers.reverse()
。例如,我可以做reverse(mafia.views.investigation_form)
,但我更希望能够做reverse(form_urls:investigation)
之类的。
我在模板中也有同样的问题。在我将% url sign_up %
的每个实例转换为% url mafia.views.sign_up %
等之前。我想尝试使用名称仍然这样做。有办法吗?
【问题讨论】:
【参考方案1】:namespacing of url patterns解决了你面临的问题:
首先,为您包含的网址添加一个namespace
参数到您的主urls.py
:
url(r'form/', include(form_urls, namespace='forms')),
假设您在form_urls
中有以下内容:
url(r'my-form/$', 'mafia.views.my_form', name='my_form'),
然后您可以使用% urls forms:my_form %
反转它。
【讨论】:
谢谢,这就是我要找的。span>以上是关于如何在包含 URL 的 django 中使用 reverse()?的主要内容,如果未能解决你的问题,请参考以下文章
如何在包含 URL 的 django 中使用 reverse()?
Django框架中path及re_path中name参数的使用和模板渲染(八)
re_path 的 Django 模板 url NoReverseMatch