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之网站的结构
Oct 24 Python
python文件操作相关知识点总结整理
Feb 22 Python
使用Python对SQLite数据库操作
Apr 06 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
简单实现python数独游戏
Mar 30 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Python SELENIUM上传文件或图片实现过程
Oct 28 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
Python实现验证码识别
Jun 15 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
在视频前插入广告
2006/11/20 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
Flask框架web开发之零基础入门
2018/12/10 Python
numpy基础教程之np.linalg
2019/02/12 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
使用TensorFlow搭建一个全连接神经网络教程
2020/02/06 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
python推导式的使用方法实例
2021/02/28 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
让世界充满爱演讲稿
2014/05/24 职场文书
三八节标语
2014/06/27 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技