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通过websocket与js客户端通信示例分析
Jun 25 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
六行python代码的爱心曲线详解
May 17 Python
Python while循环使用else语句代码实例
Feb 07 Python
python列表的逆序遍历实现
Apr 20 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python实现视频压缩功能
Dec 18 Python
python Zmail模块简介与使用示例
Dec 19 Python
Python使用pyenv实现多环境管理
Feb 05 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错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php生成图片缩略图的方法
2015/04/07 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
python Selenium 库的使用技巧
2020/10/16 Python
如何开启linux的ssh服务
2013/06/03 面试题
高一学生期末评语
2014/04/25 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
关于安全的标语
2014/06/10 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android