我正在为Django中的URL命名空间寻找一个很好的教程。我发现官方文档有点过于稀疏 - 它缺乏很好的例子。我在堆栈中找到了similar question,但答案并没有帮助我完全理解这个主题。
答案 0 :(得分:33)
同意,这方面的文件相当令人困惑。这是我对它的阅读(注意:所有代码都是未经测试!):
在apps.help.urls
:
urlpatterns = [
url(r'^$', 'apps.help.views.index', name='index'),
]
在您的主urls.py
:
urlpatterns = [
url(r'^help/', include('apps.help.urls', namespace='help', app_name='help')),
url(r'^ineedhelp/', include('apps.help.urls', namespace='otherhelp', app_name='help')),
]
在你的模板中:
{% url help:index %}
应生成网址/help/
。
{% url otherhelp:index %}
应生成网址/ineedhelp/
。
{% with current_app as 'otherhelp' %}
{% url help:index %}
{% endwith %}
同样应该生成网址/ineedhelp/
。
同样,reverse('help:index')
应生成/help/
。
reverse('otherhelp:index')
应生成/ineedhelp/
。
reverse('help:index', current_app='otherhelp')
同样应该生成/ineedhelp/
。
就像我说的那样,这是基于我对文档的阅读以及我对Django-land中事物的运作方式的熟悉程度。我还没有花时间来测试这个。
答案 1 :(得分:0)
这是来自文档
(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),
也许你应该更具体地了解你想要做什么。