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的常见命令注入威胁
Feb 18 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
python正则表达式面试题解答
Apr 28 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
python实现机器学习之多元线性回归
Sep 06 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
python3.4中清屏的处理方法
Jul 06 Python
Python实现自动装机功能案例分析
Oct 22 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
PHP $_FILES函数详解
2011/03/09 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php时区转换转换函数
2014/01/07 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python实现的Kmeans++算法实例
2014/04/26 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Python多进程原理与用法分析
2018/08/21 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
部门年终奖分配方案
2014/05/07 职场文书
促销活动总结模板
2014/07/01 职场文书
医院义诊活动总结
2014/07/04 职场文书
社区创先争优承诺书
2014/08/30 职场文书
车辆年审委托书范本
2014/09/18 职场文书
雾霾停课通知
2015/04/24 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
Java设计模式之享元模式示例详解
2022/03/03 Java/Android