Django, настроить производственные и локальные параметры БД - PullRequest
0 голосов
/ 04 августа 2020

У меня есть проект Django, развернутый на Heroku, где я пытаюсь настроить файл настроек для изменения БД между производством и разработкой.

Я действительно не вижу смысла создавать три настройки (включая базовый файл), поскольку единственное, что я изменяю, - это настройки базы данных, но я не хочу использовать

python manage.py runserver --settings=rivendell.settings.local

каждый раз, когда я запускаю manage.py. если я запускаю без флага настроек, сервер запускается Но я получаю сообщение об ошибке:

settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

Я знаю, почему это происходит, но я могу установить Django, чтобы выбрать правильный файл.

Мое дерево:

|-- rivendell
|   |-- __init__.py
|   |-- asgi.py
|   |-- settings
|   |   |-- __init__.py
|   |   |-- consts
|   |   |-- local.py
|   |   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py

мой файл настроек:

import os

import dj_database_url
import dotenv
import environ

from .consts.apps import INSTALLED_APPS, MIDDLEWARE
from .consts.consts import (PASSWORD_VALIDATORS, POSTGRESQL_CONNECTION, STATIC,
                            TEMPLATES, Config, Language)
from .consts.logging import LOGGING
from .consts.rest_framework import REST_FRAMEWORK

env = environ.Env(DEBUG=(bool, False))
environ.Env.read_env()

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
env_file = os.path.join(BASE_DIR, ".env")

if os.path.isfile(env_file):
    file = dotenv.load_dotenv(env_file)

SECRET_KEY = '+@sxt&+q5=9-u&it^5n-n!!a-2*fcbur^-umoxw*#!_ik$@kbc'

DEBUG = env('DEBUG')

ALLOWED_HOSTS = Config.HOSTS
INTERNAL_IPS = ['127.0.0.1', ]

INSTALLED_APPS = INSTALLED_APPS
REST_FRAMEWORK = REST_FRAMEWORK
MIDDLEWARE = MIDDLEWARE

ROOT_URLCONF = Config.URLS_PATH

TEMPLATES = TEMPLATES

WSGI_APPLICATION = Config.WSGI

DATABASES = {'default': dj_database_url.config(conn_max_age=600, ssl_require=True)} # My issue

AUTH_PASSWORD_VALIDATORS = PASSWORD_VALIDATORS
AUTH_USER_MODEL = 'users.CustomUser'
DJOSER = {
    'SERIALIZERS': {
        'user_create': 'users.serializers.UserRegistrationSerializer',
    },
}

# Language and Time Zone
LANGUAGE_CODE = Language.LANGUAGE_CODE
TIME_ZONE = Language.TIME_ZONE
USE_I18N = True
USE_L10N = False
USE_TZ = True

PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = STATIC
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

LOGGING = LOGGING

мой локальный файл:

from .settings import *

DATABASES = {
    'default': {
        'ENGINE': POSTGRESQL_CONNECTION['ENGINE'],
        'NAME': POSTGRESQL_CONNECTION['DATABASE'],
        'user': POSTGRESQL_CONNECTION['USER'],
        'PASSWORD': POSTGRESQL_CONNECTION['PASSWORD'],
        'HOST': POSTGRESQL_CONNECTION['HOST'],
    }
}

...