我开始将 Django 开发作为一个业余项目。到目前为止,我一直愉快地使用 SQLite,无论是在开发(即使用 py manage.py runserver
)还是在部署(在 Nginx + uWSGI 上)。现在我也想学习使用更强大的 PostgreSQL 数据库。但是,如果可能的话,我想跳过本地安装,以避免在 Windows 上安装 Postgres。
我想知道是否可以通过 Django 在部署中使用内置服务器和 Postgres 时使用 SQLite,而无需更改项目代码。找不到如何操作。
我可以使用变通方法,让我的部署过程在每次部署时更改服务器上的设置。但这有点像 hack。
最佳答案
您可以将 settings.py
拆分为多个设置文件,例如
[projectname]/
├── [projectname]/
│ ├── __init__.py
│ ├── settings/
│ │ │── base.py
│ │ │── development.py
│ │ │── production.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
您的 base.py
包括您当前 settings.py 中的所有代码。在 development.py
(sqlite3) 和 production.py
(postgresql) 中指定不同的数据库,并在每个数据库中导入 base.py
from .base import *
最后但同样重要的是,您必须告诉 django 它应该使用哪个文件。添加
export DJANGO_SETTINGS_MODULE="projectname.settings.development"
在你的开发服务器上你的 virtualenv 的 postactivate 和
export DJANGO_SETTINGS_MODULE="projectname.settings.production"
在您的生产服务器上。不要忘记
unset DJANGO_SETTINGS_MODULE
在您的预停用中。
更多信息在这里:http://www.marinamele.com/taskbuster-django-tutorial/settings-different-environments-version-control 顺便提一句。包含大量最佳实践的精彩教程
关于django - 在本地为 Django 使用 SQLite,在服务器上使用 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40687373/