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获取当前计算机cpu数量的方法
Apr 18 Python
Python实现从URL地址提取文件名的方法
May 15 Python
Python Requests 基础入门
Apr 07 Python
利用Python如何生成随机密码
Apr 20 Python
对python 各种删除文件失败的处理方式分享
Apr 24 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
python文件写入write()的操作
May 14 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
python中property和setter装饰器用法
Dec 19 Python
python进度条显示之tqmd模块
Aug 22 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 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 CURL 内存泄露问题解决方法
2015/02/12 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
Python的时间模块datetime详解
2017/04/17 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python中使用print输出中文的方法
2018/07/16 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
Python安装Bs4的多种方法
2020/11/28 Python
实习评语
2013/12/16 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
倡议书格式
2014/04/14 职场文书
房地产推广策划方案
2014/05/19 职场文书
小学运动会口号
2014/06/07 职场文书
安全口号大全
2014/06/21 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
python创建字典及相关管理操作
2022/04/13 Python