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 random模块(获取随机数)常用方法和使用例子
May 13 Python
浅谈python对象数据的读写权限
Sep 12 Python
python与php实现分割文件代码
Mar 06 Python
python的dataframe和matrix的互换方法
Apr 11 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
好的Python培训机构应该具备哪些条件
May 23 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Django框架 querySet功能解析
Sep 04 Python
Python求解正态分布置信区间教程
Nov 20 Python
Python-for循环的内部机制
Jun 12 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
python获取linux系统信息的三种方法
Oct 14 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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
基于jquery的滚动新闻列表
2010/06/19 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
js自定义回调函数
2015/12/13 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
React Native验证码倒计时工具类分享
2017/10/24 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python爬取网页转换为PDF文件
2018/06/07 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python request操作步骤及代码实例
2020/04/13 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
super关键字的用法
2012/04/10 面试题
什么是Rollback Segment
2013/04/22 面试题
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
环保建议书300字
2014/05/14 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
小学数学教学随笔
2015/08/14 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python