我正在使用环境键进行更好的设置配置。最初,我得到了以下错误
django.core.exceptions.ImproperlyConfigured: Set the DATABASE_URL environment variable因此,我在google中搜索并找到了以下解决方案
settings/base.py
import os
with open('.envs/.local/.postgres') as fh:
os.environ.update(line.strip().split('=', 1) for line in fh)然而,这也给了我一个错误。我得到了
ValueError: not enough values to unpack (expected 2, got 1).postgres和.django如下所示
.django
# General
# ------------------------------------------------------------------------------
export USE_DOCKER=yes
# Email
# DJANGO_EMAIL_BACKEND
# Redis
# ------------------------------------------------------------------------------
export REDIS_URL=redis://redis:6379/0
# Celery
# ------------------------------------------------------------------------------
# CELERY_BROKER_URL=
# CELERY_RESULT_BACKEND = 'django-cache'
# Flower
export CELERY_FLOWER_USER=debug
export CELERY_FLOWER_PASSWORD=debug.postgres
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=database
POSTGRES_USER=username
POSTGRES_PASSWORD=password
DATABASE_URL=postgres://username:password@localhost:5432/app发布于 2018-08-28 07:25:54
显然,并非.envs/.local/.postgres中的每一行都有一个=字符,因此split('=', 1)只为行输出元组中的一个项,而dict.update则要求迭代器输出中的每个元组有两个项。
您应该确保生成器表达式的行中有一个=字符:
os.environ.update(line.strip().split('=', 1) for line in fh if '=' in line)编辑:既然您已经用一个附加的.django文件更新了您的问题,该文件在环境变量设置前面有一个额外的export关键字,您应该查找这个关键字,如果它存在,应该删除它:
os.environ.update((line.split(maxsplit=1)[1] if line.startswith('export ') else line).strip().split('=', 1) for line in fh if '=' in line)https://stackoverflow.com/questions/52052192
复制相似问题