有人知道好的 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 命名空间教程吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

django url中的实例命名空间和应用程序命名空间有啥区别?

django-url命名空间+反查

JQuery 命名空间是一个好习惯吗?

django-URL实例命名空间

django:url的命名空间

Django命名空间app_name和namespace