该网站上的教程创建了一个名为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
对我来说似乎很奇怪.但我是新人,所以我可能会错过一些东西.欢迎提出任何建议
这是应用程序配置功能,是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
了typename foo.apps.FooConfig
,那么该类将用于设置foo
应用程序1.7样式(推荐).
如果添加INSTALLED_APPS
普通名称foo
,则:
如果有一个变量,foo.default_app_config
这个类将用于设置foo
应用程序,1.7风格.大多数(全部?)标准Django应用程序都有这个变量,所以INSTALLED_APPS
当你从Django-1.6升级到Django-1.7时你不需要改变你的.
如果没有这样的变量,则将使用1.6样式应用程序,其中包含高级配置选项的默认值.