如何在包含 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

如何将一些信息传递给视图而不将其包含在 URL 中(django 新手)

如何理解 django url.py 中的 Url 模式

Django 路由层(urlconf)