Django INSTALLED_APPS 的命名约定是如何工作的?

2024-06-07

该网站上的教程创建了一个名为 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

我觉得很奇怪。但我是新人,所以我可能错过了一些东西。欢迎任何和所有建议


那就是应用程序配置 https://docs.djangoproject.com/en/1.9/ref/applications/Django 1.7 的新增功能。

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

此功能具有以下几个优点:

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

应用模块可以定义特殊的模块变量default_app_config指定他们的姓名AppConfig,这样他们就可以使用新功能,而无需在中指定该类的全名INSTALLED_APPS。但这是一个向后兼容功能,建议新应用程序编写完整的AppConfig name.

无论如何,大多数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, then:

    • 如果有一个变量foo.default_app_config这个类将用于设置foo应用程序,1.7 风格。大多数(全部?)标准 Django 应用程序都有此变量,因此您无需更改您的INSTALLED_APPS当您从 Django-1.6 升级到 Django-1.7 时。
    • 如果没有这样的变量,则将使用 1.6 样式应用程序,并使用高级配置选项的默认值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django INSTALLED_APPS 的命名约定是如何工作的? 的相关文章

  • “django.core.exceptions.ValidationError”错误

    我正在 Django 中编写一个简单的游戏 所有的事情都是正确的 但是突然 我遇到了以下错误 Django v 1 7 Python v 3 4 我不知道这些代码有什么问题 test alireza alireza test test1 p
  • django modelformset_factory - 管理表单数据丢失

    我仍在与表单集作斗争 我无法真正理解为什么会出现此错误 u ManagementForm 数据丢失或已被篡改 那是我的代码 请指出我的错误并帮助我解决这个问题 csrf protect transaction commit on succe
  • Sympy 求解无法找到简单方程的零空间

    我正在尝试使用 pythons 模块找到各种函数集的零空间sympy 它设法找到了一些集合的解决方案 例如 x 1 x x 2 x 2 我的代码是 from sympy import solve factorial from sympy a
  • 如何从第二个索引开始for循环

    我有这个for循环 我想i in range nI 从第二个数字开始I列表 你能指导我吗 I 0 1 2 3 4 5 6 nI len I for i in range nI sum 0 for v in range nV for j in
  • 使用欧元符号分隔符将 pandas 写入 csv 时出错

    我正在尝试将 Pandas 数据框写入 csv 并以 作为分隔符 data to csv file path sep 但是 我收到错误 TypeError delimiter must be an 1 character string 我怎
  • 按受欢迎程度列出 PyPI 包 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否可以获得按受欢迎程度 总下载数 排序的 PyPI 软件包列表 我无法找到在 PyPI 上执行此操作
  • 构造稀疏矩阵后,从稀疏到密集再到稀疏的转换会再次降低密度

    我使用 scipy 生成稀疏有限差分矩阵 最初从块矩阵构建它 然后编辑对角线以考虑边界条件 得到的稀疏矩阵是BSR类型的 我发现如果我将矩阵转换为稠密矩阵 然后使用以下命令返回稀疏矩阵scipy sparse BSR matrix函数 我留
  • 如何在两个 PyQt5 MainWindow 小部件之间切换

    我正在编写一个程序 它有两个不同的部分 让我们称它们为 sub1 和 sub2 当我最初运行程序时 会显示 sub1 并且我在后台加载 sub2 但不显示它 我在 sub1 中有一个菜单操作 允许您切换到 sub2 在 sub2 中有一个菜
  • pygtk关于设置按钮敏感属性的奇怪问题

    在我的一种方法中 我有以下代码 def fun self button1 set sensitive False self get time 然而 self button1只有在get time 返回后才变得不敏感 使用time sleep
  • “发射后不管” python async/await

    有时需要发生一些非关键的异步操作 但我不想等待它完成 在 Tornado 的协程实现中 您可以通过简单地省略来 触发并忘记 异步函数yield关键词 我一直在试图弄清楚如何用新的方式 发射后忘记 async awaitPython 3 5
  • 合并从循环返回的 numpy 数组

    我有一个生成 numpy 数组的循环 for x in range 0 1000 myArray myFunction x 返回的数组始终是一维的 我想将所有数组组合成一个数组 也是一维的 我尝试了以下操作 但失败了 allArrays f
  • 为什么反斜杠出现两次?

    当我创建包含反斜杠的字符串时 它们会重复 gt gt gt my string why does it happen gt gt gt my string why does it happen Why 你所看到的是表示 of my stri
  • UTF-16-LE 文件的 Python 字符串替换

    Python 2 6 使用 Python string replace 似乎不适用于 UTF 16 LE 文件 我想到了2种方法 找到一个可以处理 Unicode 字符串操作的 Python 模块 将目标 Unicode 文件转换为 ASC
  • 执行源代码时忽略导入错误

    我有一个应用程序 它读取 python 中的测试脚本并将其通过网络发送以在远程 python 实例上执行 由于控制程序不需要运行这些脚本 我不想将测试脚本使用的所有模块安装在控制器的 python 环境中 然而 控制器确实需要来自测试脚本的
  • 如何订阅所有进程的PROCESS_STATE_RUNNING事件

    我在用着主管的事件框架 http supervisord org events html订阅由 Supervisor 管理的进程的事件 我的事件监听器 processlistener py 看起来像这样 import sys from su
  • Azure Cosmos DB,删除 IDS(肯定存在)

    这可能是一个非常简单和愚蠢的错误 但我不确定这是如何失败的 我已经用过https github com Azure azure cosmos python insert data https github com Azure azure c
  • 根据 Pandas 中用户指定的日期列和输入参数计算特定函数

    我有一个 df 如下所示 Date t factor 2020 02 01 5 2020 02 03 23 2020 02 06 14 2020 02 09 23 2020 02 10 23 2020 02 11 23 2020 02 13
  • tkinter.mainloop 函数的 n 参数是什么?

    A n参数可以被赋予tkinter mainloop功能 help tkinter Tk mainloop gt gt gt gt mainloop self n 0 What is n here Call the mainloop of
  • 如何将 py_func 与返回 dict 的函数一起使用

    我正在使用编写输入管道tf data Dataset 我想使用 python 代码来加载和转换我的样本 代码返回张量字典 不幸的是 我不知道如何将其定义为传递给的输出类型tf py func 我有一个解决方法 我的函数返回张量列表而不是字典
  • 类型错误:序列项 0:预期字符串,未找到 NoneType

    我正在努力改进战舰游戏 原始版本工作正常 没有错误 我编写了代码来帮助克服第一个版本每次都将船只放置在同一个位置的事实 因此我从一艘船 由两个方块组成 开始 我通过创建两个函数来完成此操作 第一个函数生成一个随机坐标 Destroyer 2

随机推荐

  • For-each 在 ionic2 和 angularjs2 中

    我用 IONIC 2 Beta 版本制作了一个应用程序 我想用for each环形 是否可以在 Angular V2 中使用每个 Thanks 首先在Component 您必须声明要显示的数组 import Component from a
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 基于 ajax 的弹出窗口中的 Mathjax + CKEditor 4 + CKEditor

    我已经配置了 CKEditor 4 并且我的页面上有以下内容 我的页面中有一个 CKEditor 设置值的两个选项 这两个选项本身分别选项两个基于 ajax 的弹出窗口 这些基于 ajax 的弹出窗口包含 CKEditor 现在我有以下问题
  • 使用用户名和密码登录 LinkedIn 失败

    LinkedIn使用oauth登录其api 服务器中无法登录api 我尝试使用http请求登录linkedin并获取oauth verifier 但我得到了这样的回应 很抱歉 出现了问题 你的申请 请确保您 启用cookie并重试 或点击此
  • 如何在Windows窗体中打开进程

    我想在我的 Windows 窗体应用程序中打开进程 例如 我希望当用户按下 Windows 窗体容器之一中的按钮时 mstsc exe 将打开 如果他按下按钮 它将在另一个容器上打开 IE DllImport user32 dll SetL
  • JSON 编码和大引号

    我在 PHP 5 的本机实现中遇到了一个有趣的行为json encode 显然 当将对象序列化为 json 字符串时 编码器将清空包含 卷曲 引号的字符串的任何属性 这种类型可能会在启用自动转换的情况下从 MS Word 文档中复制粘贴 这
  • PHP 插入中的 mysqli_affected_rows

    我有这个代码 if mail to subject message headers insert member sql INSERT INTO members id username VALUES id username insert me
  • 如何通过引用文档查询嵌入文档?

    我正在使用 Doctrine ODM 但在通过引用文档查询嵌入文档时遇到问题 考虑以下文件
  • Ansible:如何为Solaris设置全局路径

    我正在编写 Ansible 剧本来在 Solaris 服务器上设置和安装我们的应用程序 问题是我需要执行的 bash 脚本都假设某个目录位于 PATH 上 即 data bin 如果 Ansible 没有忽略所有这些 这通常不会成为问题 p
  • Mason 方法范围 - 覆盖

    Using Mason2 https metacpan org pod Mason 有 3 个组件 Base mc tmp Base mc tmp index mc The tmp index mc内容 hello from the Som
  • 清除 Angular 表单提交中的输入字段?

    我认为 setPristine 应该执行此操作 但它不在我的项目中 这是我的表格 form name new project ng submit create project div create wrapper input project
  • jQuery/JavaScript:仅选择子级的第一个“层”

    我试图仅选择给定类型的子元素的第一 层 而不选择嵌套在另一个限定元素内的元素 例如 在 div div class special div class special div div div div class special div di
  • 如何在 Angular4 中上传相同的文件

    我能够成功上传文件 但现在的问题是它不允许我两次上传同一文件 这是我的代码
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • 如何检查令牌过期和注销用户?

    当用户单击注销按钮时 他 她可以自己注销 但是如果令牌过期 他 她就无法注销 因为在我的应用程序中 令牌在服务器端和前端都使用 当用户单击注销按钮时 如果令牌有效 则服务器和浏览器中的令牌都会被清除 当用户未注销并且他 她的令牌过期但未在浏
  • Selenium 查看鼠标/指针

    有什么方法可以在运行测试时真正看到硒鼠标吗 要么是 Windows 光标图像 要么是某种点或十字线或任何东西 我正在尝试使用拖放功能selenium and java in an HTML5Web 应用程序 并且能够看到光标以了解它实际在做
  • 设计对多个并发会话的支持

    我使用 Rails 3 2 11 和 Devise 2 2 3 作为订阅服务应用程序 我从另一位不再可用的开发人员那里继承了该应用程序 我是 Rails 和 Devise 的新手 我想要允许单个用户 电子邮件 拥有多个会话到同一个应用程序
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • Django INSTALLED_APPS 的命名约定是如何工作的?

    该网站上的教程创建了一个名为 polls 的应用程序 它使用 django 1 9 所以在 INSTALLED APPS 中它是 polls apps PollsConfig 我正在观看一个教程 他将应用程序命名为新闻通讯 并且在 INST