【问题标题】:Anyone knows good Django URL namespaces tutorial? [closed]有人知道好的 Django URL 命名空间教程吗? [关闭]
【发布时间】:2011-01-08 17:58:22
【问题描述】:

我正在寻找 Django 中 URL 命名空间的好教程。我发现官方文档有点太稀疏 - 它缺乏很好的例子。我在堆栈上找到了similar question,但答案也没有帮助我完全理解这个主题。

【问题讨论】:

  • 您是否查看了docs.djangoproject.com/en/1.3/topics/http/urls/… 中的 url dispatcer doc 我建议您阅读整个部分,因为如果您了解其工作原理的基础知识,那么它会更容易理解
  • @FallenAngel:我的观点仍然存在——在官方文档中没有使用命名空间的好例子。

标签: django django-urls


【解决方案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')),

也许您应该更具体地说明您要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 2010-10-23
    • 2010-10-09
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多