时间:2021-05-22
在上篇文章给大家介绍过Django 多环境配置详解,感兴趣的朋友可以点击查阅,今天继续给大家介绍django 多环境配置的相关内容,本文重点给大家介绍Django 设置多环境配置文件载入的相关知识,一起看看吧。
起步
通常,针对不同的开发环境,需要不同的配置保证程序可运行且不干扰。单个 settings.py 文件就很难满足需求,需要将他拆分为多个文件,根据特定环境载入不同的配置文件。一种简单的划分就是分为 4 个文件:
__init__.pybase.pydev.pyprod.py基本结构
一个初始的 Django 项目目录结构如下:
mysite/ |-- mysite/ | |-- __init__.py | |-- settings.py | |-- urls.py | +-- wsgi.py +-- manage.py这时候要做的就是创建一个名为 settings 的文件夹,将 settings.py 重命名为 base.py 并放入文件夹内:
mysite/ |-- mysite/ | |-- __init__.py | |-- settings/ <-- 新建的文件夹 | | |-- __init__.py <-- | | |-- base.py <-- 旧的 settings.py | | |-- cli.py <-- 根据不同环境而新增的配置文件 | | |-- dev.py | | +-- prod.py | |-- urls.py | +-- wsgi.py +-- manage.pybase.py 顾名思义,它将成为所有环境的通用配置,扩展的配置文件需要将 base.py 导入:
# settings/dev.pyfrom .base import *DEBUG = TrueINSTALLED_APPS += [ 'debug_toolbar',]...让配置文件生效
要使配置文件生效,需要让 Django 知道我们要使用哪个配置文件,一种方式就是在命令行中传递这个 --settings=mysite.settings.dev 参数,如:
python manage.py runserver --settings=mysite.settings.devpython manage.py runserver --settings=mysite.settings.prodpython manage.py migrate --settings=mysite.settings.prod如果不希望每次指令都传递 --settings 参数,也可以通过修改 manage.py 文件实现使用不同的配置文件:
# manage.pyimport osimport sysif __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.dev") # 修改这个位置 ...在服务器上指定设置
生产环境下一般不会使用 runserver 指令运行,大多是通过 uwsgi 方式运行,修改 mysite/wsgi.py :
import osfrom django.core.wsgi import get_wsgi_applicationos.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.prod")application = get_wsgi_application()通过修改 DJANGO_SETTINGS_MODULE 环境变量指向所需的配置文件。
下面看下django settings多环境配置
通常我们会把本地、线上的配置拆分,django不同环境的配置可如下:
1.在settings.py同级目录添加settings文件夹
2.把settings.py移到settings文件夹内,并重命名为base.py
3.添加dev.py, prod.py到settings文件夹
4.base.py中的根目录,要改成:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(os.path.join(__file__, os.pardir))))说明:
1)一些公共配置,放在base.py中。其他因环境而不同的配置,加到local.py/prod.py中
2)dev.py/prod.py,需要把base.py中的配置导入
from .base import *DEBUG = True#其他配置3)启动服务时,用--setings指定配置
python manage.py runserver --settings=back-server.settings.dev正式环境用uwsgi部署,则配置环境变量:DJANGO_SETTINGS_MODULE=back-server.settings.prod
总结
到此这篇关于Django 设置多环境配置文件载入的文章就介绍到这了,更多相关django 配置文件载入内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
现作个简单回顾:基本上应该遇到的问题都遇到了,关键是多查资料,多动脑子就能解决问题的。1/无法载入mcrypt扩展,请检查PHP配置;2/配置文件现在需要绝密的
开发项目时会遇到这个问题:开发环境,测试环境,生产环境的配置文件不同,打包时经常要手动更改配置文件,更改的少还可以接受,但是如果需要更多个配置文件,手动的方法就
具体做法:不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.properties中;prod环境下的配置配置在app
问题描述最近在做的这个项目架构组对于配置文件决定,采取的是.xml配置文件一个数据中台项目,因为部署环境比较复杂,可能需要适配阿里、腾讯、开源等环境和机房,所以
1.切换需求有时候在本地测试是使用8080端口,可是上线使用的又是80端口。此时就可以通过多配置文件实现多配置支持与灵活切换2.多配置文件3个配置文件:核心配置