如何在包含 URL 的 Django 中使用 reverse()?
How to use reverse() in django on included URLs?
我的 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 %}
等之前。我想尝试使用名称仍然这样做。有办法吗?
您遇到的问题已解决 namespacing of url patterns:
首先,为包含的 url 添加一个 namespace
参数到您的 master 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 %}
反转它。
我的 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 %}
等之前。我想尝试使用名称仍然这样做。有办法吗?
您遇到的问题已解决 namespacing of url patterns:
首先,为包含的 url 添加一个 namespace
参数到您的 master 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 %}
反转它。