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调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
python opencv之分水岭算法示例
Feb 24 Python
python内置数据类型之列表操作
Nov 12 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
ipad上运行python的方法步骤
Oct 12 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
如何用Python徒手写线性回归
Jan 25 Python
python 爬取天气网卫星图片
Jun 07 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的session cookie错误
2009/08/09 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
javascript实现的listview效果
2007/04/28 Javascript
Javascript Select操作大集合
2009/05/26 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
angular中使用Socket.io实例代码
2017/06/03 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python实现QQ批量登录功能
2019/06/19 Python
python3 求约数的实例
2019/12/05 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
世界排名第一的运动鞋市场:Flight Club
2020/01/03 全球购物
自我评价是什么
2014/01/04 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
学前班学生评语
2014/12/29 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
会计岗位工作总结
2015/08/12 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
pytorch常用数据类型所占字节数对照表一览
2021/05/17 Python