gpt4 book ai didi

python - 它是如何工作的,Django INSTALLED_APPS 的命名约定?

转载 作者:IT老高 更新时间:2023-10-28 20:27:49 27 4
gpt4 key购买 nike

网站上的教程创建了一个名为 polls 的应用程序。它使用的是 django 1.9,所以在 INSTALLED_APPS 中是:

polls.apps.PollsConfig

我正在看一个教程,他命名了应用时事通讯,并且在 INSTALLED_APPS 中他有

newsletter

不过,他使用的是 1.8。我正在使用 1.9。我看过其他教程,他们也只是像他一样在语法中添加一个不带点的名称。我意识到事情可能会有所不同,这是可以理解的。如果我将我的应用程序命名为狗,请明确。在已安装的应用程序中,它会这样命名

dogs.apps.DogsConfig

如果是树,那就是

tree.apps.TreeConfig

这就是命名约定的方式吗?我也认为在新版本中事情会变得更短,更方便。所以从添加

newsletter,

不得不打字

polls.apps.PollsConfig

对我来说似乎很奇怪。但我是新手,所以我可能会遗漏一些东西。欢迎任何建议

最佳答案

那是Application Configuration Django 1.7 的新功能。

基本上,现在您可以在 INSTALLED_APPS 中列出包含应用程序的模块或从 django.apps.AppConfig 派生并定义应用程序行为的类.

此功能提供了几个优点:

  • 可以更轻松地配置应用,甚至可以为自定义设置子类。
  • 您可以在同一个模块中拥有多个应用。

应用模块可以定义特殊的模块变量default_app_config来指定它们的AppConfig的名称,这样它们就可以使用新的特性而不必指定全名INSTALLED_APPS 中的那个类。但这是一个向后兼容的功能,建议新应用编写完整的 AppConfig 名称。

无论如何,大多数 django/contrib 应用程序都使用该 default_app_config,以与旧配置兼容。参见例如文件 django/contrib/messages/__init__.py 只是:

from django.contrib.messages.api import *
from django.contrib.messages.constants import *

default_app_config = 'django.contrib.messages.apps.MessagesConfig'

因此,根据 OP 请求将其加起来:

  • 如果您在 INSTALLED_APPS 中添加类型名称 foo.apps.FooConfig,那么该类将用于设置 foo 应用程序,1.7样式(推荐)。
  • 如果您在 INSTALLED_APPS 中添加纯名称 foo,则:

    • 如果有一个变量 foo.default_app_config 这个类将用于设置 foo 应用程序,1.7 样式。大多数(全部?)标准 Django 应用程序都有此变量,因此当您从 Django-1.6 升级到 Django-1.7 时,您无需更改 INSTALLED_APPS
    • 如果没有这样的变量,则将使用 1.6 样式的应用程序,高级配置选项使用默认值。

关于python - 它是如何工作的,Django INSTALLED_APPS 的命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com