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虚拟环境virtualenv的使用教程
Oct 20 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
python实现动态数组的示例代码
Jul 15 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
python简单的三元一次方程求解实例
Apr 02 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
用python写爬虫简单吗
Jul 28 Python
python 基于opencv实现高斯平滑
Dec 18 Python
5分钟快速掌握Python定时任务框架的实现
Jan 26 Python
Python爬虫框架之Scrapy中Spider的用法
Jun 28 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
相对路径转化成绝对路径
2007/04/10 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
php xhprof使用实例详解
2019/04/15 PHP
js 颜色选择器(兼容firefox)
2009/03/05 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
2015/11/04 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Node.js中的cluster模块深入解读
2018/06/11 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
python库matplotlib绘制坐标图
2019/10/18 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python argparse模块应用实例解析
2019/11/15 Python
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
数控机床专业自荐信
2014/05/19 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
幼师大班个人总结
2015/02/13 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
Vue实现下拉加载更多
2021/05/09 Vue.js
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android