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实现简单socket程序在两台电脑之间传输消息的方法
Mar 13 Python
Django返回json数据用法示例
Sep 18 Python
Python常用算法学习基础教程
Apr 13 Python
Python实现多并发访问网站功能示例
Jun 19 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
python装饰器常见使用方法分析
Jun 26 Python
python绘制彩虹图
Dec 16 Python
如何基于python测量代码运行时间
Dec 25 Python
python实现感知机模型的示例
Sep 30 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
详解MindSpore自定义模型损失函数
Jun 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中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
javascript读取RSS数据
2007/01/20 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
详解JS 比较两个Json对象的值是否相等的实例
2013/11/20 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
web打印小结
2017/01/11 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
使用Nodejs连接mongodb数据库的实现代码
2017/08/21 NodeJs
vue动态绑定class选中当前列表变色的方法示例
2018/12/19 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
详解jquery和vue对比
2019/04/16 jQuery
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
用Python实现读写锁的示例代码
2018/11/05 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python Map 函数的使用
2020/08/28 Python
python开发入门——set的使用
2020/09/03 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
单位实习证明怎么写
2014/01/17 职场文书
春季运动会广播稿大全
2014/02/19 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
党员倡议书
2015/01/19 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis