如何在包含的URL中使用django中的reverse()?

时间:2015-02-22 04:02:23

标签: python django django-templates django-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 %}等之前,我还想尝试使用名称。有办法吗?

1 个答案:

答案 0 :(得分:3)

您遇到的问题由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 %}将其撤消。