如何使用postgresql配置我的django settings.py用于生产



我已经部署了我的django应用程序,我使用postgresql作为我的服务器,我使用heroku来托管我的应用程序。然而,我不知道我应该在我的主机中放置什么,而不是使用localhost。

注意:如果我在本地运行,它可以完美地工作。

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'trilz',
'USER': 'postgres',
'PASSWORD': 'franz123',
'HOST': 'localhost',
'PORT': '5432',
}
}

您可能应该使用环境变量(前面的链接实际上使用数据库作为示例)。使用硬编码值会使您容易受到一系列不同风险的影响。Django指南还提供了连接文件。

在你开始使用它之后,你需要弄清楚你在哪里运行你的Postgres数据库。localhost的意思是"我的机器";(即运行Django应用的同一台机器。)如果您正在使用某些数据库即服务,它们将公开您需要的所有环境变量。如果您正在使用Heroku之类的东西,它们将在运行您可能会使用的服务时公开环境变量。如果你使用的是自己控制的Kubernetes/Docker设置,那么你可能会控制数据库运行的位置,并需要使用该路径。

heroku的

我在一个业余项目中使用https://pypi.org/project/dj-database-url/(它不再维护,但在我最后一次使用它时确实有效)。

我的配置是这样的:

DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "mydatabase"}}
if "DATABASE_URL" in os.environ:
logger.info("Adding $DATABASE_URL to default DATABASE Django setting.")
DATABASES["default"] = dj_database_url.config(conn_max_age=600)
DATABASES["default"]["init_command"] = "SET sql_mode='STRICT_TRANS_TABLES'"

如果没有添加URL,则提供工作Sqlite3版本。如果你愿意,你可以用别的东西。Heroku公开了一个名为DATABASE_URL的环境变量,该变量链接到您在Heroku中配置的数据库,您可以在if "DATABASE_URL" in os.environ:中捕获该数据库,然后使用它。这是否提供了一个充分的答案?