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遍历目录的4种方法实例介绍
Apr 13 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
python urllib爬取百度云连接的实例代码
Jun 19 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python pycharm 同时加载多个项目的方法
Jan 17 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 Python
python库matplotlib绘制坐标图
Oct 18 Python
Python super()函数使用及多重继承
May 06 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
使用gunicorn部署django项目的问题
Dec 30 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中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
python列表操作使用示例分享
2014/02/21 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
2015/05/05 Python
Python语言描述随机梯度下降法
2018/01/04 Python
详解python3中zipfile模块用法
2018/06/18 Python
python 的topk算法实例
2020/04/02 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
协议书怎么写
2014/04/21 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
二胎满月酒致辞
2015/07/29 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
MySQL表字段时间设置默认值
2021/05/13 MySQL
新手初学Java网络编程
2021/07/07 Java/Android
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏