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将xml和xsl转换为html的方法
Mar 10 Python
用Python制作简单的朴素基数估计器的教程
Apr 01 Python
在Python中使用NLTK库实现对词干的提取的教程
Apr 08 Python
python web框架学习笔记
May 03 Python
Python3操作MongoDB增册改查等方法详解
Feb 10 Python
Python中sys模块功能与用法实例详解
Feb 26 Python
jupyter notebook 多行输出实例
Apr 09 Python
Django中FilePathField字段的用法
May 21 Python
python中的错误如何查看
Jul 08 Python
python设置中文界面实例方法
Oct 27 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Django使用channels + websocket打造在线聊天室
May 20 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
模仿OSO的论坛(一)
2006/10/09 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
[01:18:21]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
python中的错误处理
2016/04/10 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
scrapy爬虫实例分享
2017/12/28 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python爬虫实现获取下一页代码
2020/03/13 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
python实现计算器简易版
2020/12/17 Python
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
班长演讲稿范文
2014/04/24 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
幼儿园开学通知
2015/04/24 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
《绝招》教学反思
2016/02/20 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android