设置 DATABASE_URL 环境变量

问题描述 投票:0回答:4

我正在尝试通过查看两勺 django 来创建我自己的项目结构。项目结构看起来像这样

.环境

.本地

  .django

  .postgres

.生产

 .django

 .postgres

在本地的postgres中,列出了以下项目

POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=marketing
POSTGRES_USER=username
POSTGRES_PASSWORD=password
DATABASE_URL=postgres://username:password@localhost:5432/marketing

设置文件分为 3 部分,即

base.py, local.py and production.py

在base.py中,我已配置

DATABASES
键如下

DATABASES = {
    'default': env.db('DATABASE_URL'),
}

但是我收到错误

django.core.exceptions.ImproperlyConfigured:设置 DATABASE_URL 环境变量

尽管我在 .envs/.local/.postgres 中有

DATABASE_URL
,但我遇到了上述错误。为什么会这样?

python django django-settings
4个回答
3
投票

.myfilename
中的变量之前添加导出。

export POSTGRES_HOST=postgres
export POSTGRES_PORT=5432
export POSTGRES_DB=marketing
export POSTGRES_USER=username
export POSTGRES_PASSWORD=password
export DATABASE_URL=postgres://username:password@localhost:5432/marketing

那就做吧

source .myfilename


1
投票

我最近遇到了同样的问题。文件 .local/.postgres 中的

DATABSE_URL
环境变量需要是:
DATABASE_URL=postgres://username:password@{DB_SERVICE_NAME}:5432/marketing

正如您在此处看到的,如果您的 docker-compose.yml 的服务名称为 postgres,请使用“postgres”代替 localhost。


0
投票

对于基于Python的解决方案,请检查此链接(归功于用户@falsetru)。

基本上,添加

import os

with open('.envs/.local/.postgres') as fh:
    os.environ.update(line.strip().split('=', 1) for line in fh)

在您最初的 python 脚本之一中,例如

local.py


0
投票
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=database
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password

并且它们使用 DATABASE_URL 上的变量,因此如果您更改任何 POSTGRES_* 将影响 DATABASE_URL

DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@$POSTGRES_HOST:$POSTGRES_PORT/$POSTGRES_DB
© www.soinside.com 2019 - 2024. All rights reserved.