有人知道好的 Django URL 命名空间教程吗? [关闭]
Posted
技术标签:
【中文标题】有人知道好的 Django URL 命名空间教程吗? [关闭]【英文标题】:Anyone knows good Django URL namespaces tutorial? [closed] 【发布时间】:2011-01-08 17:58:22 【问题描述】:我正在寻找 Django 中 URL 命名空间的好教程。我发现官方文档有点太稀疏 - 它缺乏很好的例子。我在堆栈上找到了similar question,但答案也没有帮助我完全理解这个主题。
【问题讨论】:
您是否查看了docs.djangoproject.com/en/1.3/topics/http/urls/… 中的 url dispatcer doc 我建议您阅读整个部分,因为如果您了解其工作原理的基础知识,那么它会更容易理解 @FallenAngel:我的观点仍然存在——在官方文档中没有使用命名空间的好例子。 【参考方案1】:同意,这方面的文档相当混乱。这是我对它的阅读(注意:所有代码未经测试!):
在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 %
应该产生 url /help/
。
% url otherhelp:index %
应该产生 url /ineedhelp/
。
% with current_app as 'otherhelp' %
% url help:index %
% endwith %
同样应该产生 url /ineedhelp/
。
同样,reverse('help:index')
应该产生 /help/
。
reverse('otherhelp:index')
应该产生/ineedhelp/
。
reverse('help:index', current_app='otherhelp')
应该同样产生/ineedhelp/
。
就像我说的那样,这是基于我对文档的阅读以及我对 Django 领域的工作方式的现有熟悉程度。我没有花时间测试这个。
【讨论】:
为什么我们需要同时设置 app_name 和 namespace?只是想知道。似乎它在不设置 app_name 时也有效 因为文档led me to believe they were necessary。即使文档是错误的或具有误导性,包含app_name
可能更具前瞻性,如文档所述,以防将来行为发生变化以匹配文档。如果你真的想知道为什么,你必须阅读代码。
好建议我通常会尝试尽可能多地阅读源代码,但无法直接找到相关部分,将进行更多挖掘。之前看过一篇不错的文章,里面说:来源永远不会说谎,但手册可能会说谎。他基本上告诉人们如果遇到问题或使用错误的api,请阅读源代码嘿嘿。
小心。为我运行但不带引号:% url help:index %
确认!我不记得什么时候应该在 Django 模板标签中引用内容。很好的收获。【参考方案2】:
这是来自文档
(r'^help/', include('apps.help.urls', namespace='foo', app_name='bar')),
也许您应该更具体地说明您要做什么。
【讨论】:
以上是关于有人知道好的 Django URL 命名空间教程吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章