我有一个基本的django rest API。我只想出于组织目的将一些设置分别用于开发和生产。我还只是在学习有关分离环境的知识。我已经阅读了几本书,但似乎无法按照我想要的方式来使其工作。
层次结构如下所示:
- djangorest
- api
- __init__.py
- models.py
- views.py
- urls.py
- etc..
- djangorest
- __init__.py
- settings.py
- urls.py
- wsgi.py
Run Code Online (Sandbox Code Playgroud)
现在,当我运行服务器时,我做了一个简单的操作:
python3 manage.py runserver
Run Code Online (Sandbox Code Playgroud)
该命令从settings.py中读取设置,并适当地运行它,但是我一直在寻找如何将设置分为prod vs dev的方法,它无法正常工作。
我希望能够拥有:
commonsettings.py
dev.py
prod.py
Run Code Online (Sandbox Code Playgroud)
在常规设置中,开发人员和生产人员都将拥有任何东西。我试过跑步:
python3 manage.py runserver --settings=settings.dev
Run Code Online (Sandbox Code Playgroud)
但这给我一个错误,说没有名为“设置”的模块。
请帮忙。谢谢!
例如我在开发设置中打开 SQL 日志
# proj/proj/settings/__init__.py
from .defaults import *
Run Code Online (Sandbox Code Playgroud)
# proj/proj/settings/dev.py
from .defaults import *
DEBUG = True
# print sql to the console
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
}
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
}
},
}
Run Code Online (Sandbox Code Playgroud)
./manage.py runserver --settings proj.settings.dev
Run Code Online (Sandbox Code Playgroud)
Django 2.1.7 | 苹果电脑
创建一个名为 config 的文件夹
config/
commonsettings.py
dev.py
prod.py
Run Code Online (Sandbox Code Playgroud)
确保在 dev.py 和 prod.py 中像这样从 commonsettings.py 导入所有内容:
from .commonsettings import *
Run Code Online (Sandbox Code Playgroud)
那么如果你想运行 dev.py 设置:
python manage.py runserver --settings=config.dev
Run Code Online (Sandbox Code Playgroud)
如果你想运行 prod.py:
python manage.py runserver --settings=config.prod
Run Code Online (Sandbox Code Playgroud)
笔记:
对于更具可读性的文件,许多开发人员将他们的设置文件称为:local.py(用于本地设置)production.py(用于生产设置)和 base.py(两者的通用设置)
我个人将我的设置文件放在:
config/
settings/
base.py
local.py
production.py
test.py (For tests)
Run Code Online (Sandbox Code Playgroud)
将所有常用配置放入commonsettings中。py文件。
将以下行添加到设置目录中的__init__.py文件中
from commonsettings import *
Run Code Online (Sandbox Code Playgroud)
这使得commonsettings文件中的每个配置在设置文件夹中的所有其他文件中可用
启动你的服务器
python3 manage.py runserver --settings=djangorest.settings.dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3706 次 |
| 最近记录: |