django 2中的app_name和namespace

最近看《精通DJANGO》里遇到的疑惑。

简书URL如下:

https://www.jianshu.com/p/404500a0408a

其中的官方解释:

  • 应用命名空间
    它表示正在部署的应用的名称。一个应用的每个实例具有相同的应用命名空间。例如,可以预见Django 的管理站点的应用命名空间是'admin'。
  • 实例命名空间
    它表示应用的一个特定的实例。实例的命名空间在你的全部项目中应该是唯一的。但是,一个实例的命名空间可以和应用的命名空间相同。它用于表示一个应用的默认实例。例如,Django 管理站点实例具有一个默认的实例命名空间'admin'。
    URL 的命名空间使用':' 操作符指定。例如,管理站点应用的主页使用'admin:index'。它表示'admin' 的一个命名空间和'index' 的一个命名URL。


我个人的理解:
。app_name是唯一的,如果没有定义namespace,则app_name的名称与默认的namespace相同。
。一旦自定义了namespace,则在template,models,views里进行反向URL解析时,使用namespace.(没有自定义时,使用app_name都行)
。如果想复用view,而使用不同的url,则需要为url使用不同的namepsace(app_name唯一不变)。在templates中,使用不同的namespaces解析。
。app_name最好定义在app下的urls.py中,namespace最好定义在顶级的urls.py中。
。定义的语法要搞清楚,两二组,反序app_name和namespce顺序。
 
  django 2中的app_name和namespace_第1张图片

你可能感兴趣的:(django 2中的app_name和namespace)