python  Django中的apps.py的目的是什么


Posted in Python onOctober 15, 2018

This question has been asked earlier: 07000

Application configuration objects store metadata for an application. Some attributes can be configured in AppConfig subclasses. Others are set by Django and read-only.

但是,应用程序的元数据是什么意思?只限于 AppConfig  metadata: name , verbose_name , path , label , module , models_module 吗?

或者扩展超出预定义的元数据,特别是对于特定于应用程序的元数据,例如在博客应用程序中,我们有一个日期格式配置,通常定义如下:

# File: settings.py
BLOG = {
  'DATE_FORMAT': 'ddMMYYY',
}

正在使用如下:

# File: blog/<...>.py
from django.conf import settings
date_format = settings.BLOG['DATE_FORMAT']

相反,我们可以将此配置移动到blog / apps.py作为BlogConfig?

class BlogConfig(AppConfig):
  name = 'blog'
  verbose_name = 'Awesome Blog'
  date_format = 'ddMMYYYY'

所以在应用程序的整个代码中,date_format正在被使用:

# File: blog/<...>.py
from django.apps import apps
date_format = apps.get_app_config('blog').date_format

对我来说,settings.py是项目设置,但不是应用程序设置.因此,将所有应用程序设置放在apps.py中,然后将settings.py放在更多的位置.那么,这是一个有效的假设/参数/惯例,将应用程序配置放在apps.py而不是settings.py中?

一个项目是唯一的django安装,而一个应用程序应该是可重用的.

如果您将自定义应用设置放在项目的settings.py中,那么它们应该是可修改的,特别是如果您(或其他人)将该应用重新用于另一个项目.

现在,如果您将这些自定义设置放在应用程序的apps.py中,这意味着它们将不会在每个项目的基础上进行修改.在这种情况下,没有理由将它们放在apps.py中,而不是在常量子模块中.除非你想提供一组有限的可能的配置:

class BlogConfig(AppConfig):
  name = 'blog'
  verbose_name = "Blog"
  date_format = 'ddMMYYYY'
class CustomizableDateFormatBlogConfig(BlogConfig):
  date_format = getattr(settings, 'BLOG_DATE_FORMAT', BlogConfig.date_format)
class I18nBlogConfig(BlogConfig)
  verbose_name = _("Blog")

default_app_config将是BlogConfig,但使用该应用程序的项目也可以选择CustomizableDateFormatBlogConfig或I18nBlogConfig.

然而,这使得非常可定制的应用程序.在上面的示例中,如果要让应用程序用户同时使用CustomizableDateFormatBlogConfig和I18nBlogConfig,则需要执行以下操作:

class BlogConfig(AppConfig):
  name = 'blog'
  verbose_name = "Blog"
  date_format = 'ddMMYYYY'
class CustomizableDateFormatMixin:
  date_format = getattr(settings, 'BLOG_DATE_FORMAT', BlogConfig.date_format)
class I18nMixin:
  verbose_name = _("Blog")
class CustomizableDateFormatBlogConfig(CustomizableDateFormatMixin, BlogConfig):
  pass
class I18nBlogConfig(I18nMixin, BlogConfig):
  pass
class I18nCustomizableDateFormatBlogConfig(I18nMixin, CustomizableDateFormatMixin, BlogConfig):
  pass

因此,除了需要提供一组不同的应用配置的具体情况外,您最好将自定义应用设置放在项目的settings.py中.

http://stackoverflow.com/questions/38075176/what-is-the-purpose-of-apps-py-in-django

总结

以上所述是小编给大家介绍的python  Django中的apps.py的目的是什么,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
Mar 30 Python
Python实现把回车符\r\n转换成\n
Apr 23 Python
简单了解OpenCV是个什么东西
Nov 10 Python
python迭代dict的key和value的方法
Jul 06 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
通过实例了解python__slots__使用方法
Sep 14 Python
使用Python监视指定目录下文件变更的方法
Oct 15 #Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 #Python
彻彻底底地理解Python中的编码问题
Oct 15 #Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 #Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 #Python
Python安装pycurl失败的解决方法
Oct 15 #Python
django框架之cookie/session的使用示例(小结)
Oct 15 #Python
You might like
discuz安全提问算法
2007/06/06 PHP
PHP安全性漫谈
2012/06/28 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
python自动化测试之setUp与tearDown实例
2014/09/28 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Django中Middleware中的函数详解
2019/07/18 Python
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
公务员培训心得体会
2013/12/28 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技