python - 在站点 url.py 中指定 Django URL-Namespaces 的原因是什么?

标签 python django url namespaces

我从 Django 开始,令我困惑的是 URL 命名空间的规范。据我了解,您可以在站点项目 urls.py 中指定它们,如下所示:

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls', namespace="polls")),
    url(r'^admin/', include(admin.site.urls)),
)

之后,命名空间可以在民意调查应用的模板中使用。

我担心的是:为什么应用程序中没有指定 namespace ,该 namespace 可以重用并在另一个站点中获取另一个 namespace ,因此模板不再起作用。我正在考虑 java 中的包或 C++ 中的命名空间,它们是在库中定义的,而不是在使用应用程序中定义的。

有人可以向我解释一下为什么要这样设计吗?

谢谢 汉内斯

最佳答案

这种设计为您提供了更大的灵 active 。您可以在项目中使用不同的命名空间添加一个应用程序的两个实例(例如,针对不同类型的用户的两个管理面板)。

此外,Django 在 url 中为应用程序提供了两种类型的命名空间。应用程序命名空间与java中的package或C++中的命名空间相同,它是唯一的应用程序名称,您可以在模板中使用它。

以及 Django 服务应用程序实例命名空间,如您在示例中所写:

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls', namespace="polls")),
    url(r'^admin/', include(admin.site.urls)),
)

在此示例中,管理应用程序可通过应用程序命名空间“admin”访问,而民意调查应用程序可通过应用程序实例命名空间“pools”访问,这显然是您定义的。

您可以在文档中阅读有关命名空间的更多信息: https://docs.djangoproject.com/en/1.7/topics/http/urls/#url-namespaces

application namespace

This describes the name of the application that is being deployed. Every instance of a single application will have the same application namespace. For example, Django’s admin application has the somewhat predictable application namespace of 'admin'.

instance namespace

This identifies a specific instance of an application. Instance namespaces should be unique across your entire project. However, an instance namespace can be the same as the application namespace. This is used to specify a default instance of an application. For example, the default Django admin instance has an instance namespace of 'admin'.

Url 调度程序首先按应用程序命名空间查找,然后在尝试反转 url 时,如果没有匹配项,则按实例命名空间查找: https://docs.djangoproject.com/en/1.7/topics/http/urls/#reversing-namespaced-urls

关于python - 在站点 url.py 中指定 Django URL-Namespaces 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28363405/

相关文章:

python - 如何在 Django 管理中以表格格式显示添加模型?

apache - 重写 URL SEO

html - Qt:让QWebview返回一个完整的URL

java - 通过URL导入图片并添加到面板时出错

c# - 代码中的数据库驱动程序规范

python - 在Python中使用正则表达式解析文本: determine match order and mapping value to object type?

python - 使用python web.py框架出错

python - 序列化器不可序列化数据的 Catch-all 字段

python - pandas 将列转为行

javascript - Django 模板变量在脚本标签中无法识别,但在常规 h1 标签中可识别。是什么原因造成的?