我有一个基本的django restapi。我想把dev和prod的一些设置分开,只是为了便于组织。我也在学习分离环境。我读过一些东西,但我似乎不能让它按我想要的方式运行。在
层次结构如下所示:
- djangorest
- api
- __init__.py
- models.py
- views.py
- urls.py
- etc..
- djangorest
- __init__.py
- settings.py
- urls.py
- wsgi.py
现在,当我运行服务器时,我执行一个简单的操作:
^{pr2}$该命令从中读取设置设置.py并适当地运行它,但是我已经研究过如何将设置分为prod和dev,但是它不能正常工作。在
我希望能够:
commonsettings.py
dev.py
prod.py
在commonsettings中,它只包含dev和prod中的任何内容。我试过运行:
python3 manage.py runserver --settings=settings.dev
但是它给了我一个错误,说没有名为'setting'的模块。在
请帮忙。谢谢您!在
例如,我在dev settings中打开SQL日志
我的文件结构:
创建设置文件夹和mv原始文件设置.py到设置/默认值.py
在init.py中加载默认值
- 编辑开发人员在
^{pr2}$Django 2.1.7 Mac
此解决方案不需要额外的参数,也不必跨环境替换/删除文件。在
制造设置.py决定加载哪个文件
假设您的Django项目名为MyDjangoApp。在
在Django项目的根目录中创建
config/
目录,并为每个环境创建一个.py
文件,例如:环境的数量没有逻辑上的限制,我只添加了我通常拥有的三个环境。在
然后,在
^{pr2}$MyDjangoApp/settings.py
中,我们可以添加逻辑来选择要加载的设置文件。在请注意:此逻辑根据运行Django应用程序的服务器的主机名选择要加载的设置文件。这只是一个例子-你可以实现任何其他适合你的逻辑。在
只改变需要的
好消息是,设置.py仍然可以保存绝大多数设置,
config/
中的文件只需要包含在不同环境中更改的设置,例如:避免--命令行中的设置
可以将Django设置设置为shell环境变量,如下所示:
最好的方法是在
.sh
文件中;通常我在Django项目的根目录下创建一个名为env.sh
文件的文件,并在激活virtualenv之后运行它(一次)。在文件/环境sh内容
要从终端(Bash或Windows上的git scm Bash)运行它:
然后可以使用
./manage.py runserver
在任何地方启动Django服务器。在参考号:https://code.djangoproject.com/wiki/SplitSettings#DevelopmentMachineDependantSettingsConfiguration
创建一个名为config的文件夹
确保开发人员以及生产周期你从普通设置.py像这样:
^{pr2}$如果你想运行开发人员设置:
如果你想跑生产周期公司名称:
注:
对于更具可读性的文件,许多开发人员将其设置文件称为:本地.py(用于本地设置)生产.py(用于生产设置)和基准.py(两者的共同设置)
我个人把我的设置文件放在:
相关问题 更多 >
编程相关推荐