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 相关文章推荐
Django接受前端数据的几种方法总结
Nov 04 Python
Python使用numpy实现BP神经网络
Mar 10 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
Python多项式回归的实现方法
Mar 11 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
解决python flask中config配置管理的问题
Jul 26 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python 协程 gevent原理与用法分析
Nov 22 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
python新手学习可变和不可变对象
Jun 11 Python
Python3如何实现Win10桌面自动切换
Aug 11 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
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
python树莓派红外反射传感器
2019/01/21 Python
pytorch forward两个参数实例
2020/01/17 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
Web时代变迁及html5与html4的区别
2016/01/06 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
什么是View State?
2013/01/27 面试题
竞选体育委员演讲稿
2014/04/26 职场文书
电子信息工程自荐信
2014/05/26 职场文书
车间核算员岗位职责
2014/07/01 职场文书
简单租房协议书
2014/10/21 职场文书
被告答辩状范文
2015/05/22 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
Python3的进程和线程你了解吗
2022/03/16 Python
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers