У меня есть приложение django, которое отлично работает на моем локальном сервере. К сожалению, когда я развернул его на Heroku, поведение не работает, как ожидалось. Я вижу, что это проблема, связанная с базой данных, поскольку мои выпадающие списки, которые должны загружать список значений из моей базы данных, являются пустыми в рабочем состоянии.
Я проверил Heroku в разделе «Ресурсы» моего приложения и есть база данных; он также содержит все мои таблицы проектов (django таблицы по умолчанию + моя основная таблица). Все таблицы django по умолчанию заполнены правильно (я сравнил их с моими локальными таблицами postgres, и они совпали). К сожалению, моя главная таблица пуста в Heroku, тогда как она заполнена, как и ожидалось, локально. Я не уверен, что понял, что пошло не так, особенно если учесть, что сама таблица была распознана, но она пуста. Я применил команду heroku run python manage.py migrate
, но она не устранила проблему. Я предполагаю, что мои настройки базы данных верны для локального развертывания, но не для развертывания Heroku. Тем не менее, я совсем не уверен. Я попытался заменить мои настройки базы данных на имя пользователя / хоста / пароль / имя, предоставленное Heroku, но это не сработало. Любое руководство будет высоко ценится.
Вот мои настройки.py:
import dj_database_url
import dotenv
dotenv_file = os.path.join(BASE_DIR, ".env")
if os.path.isfile(dotenv_file):
dotenv.load_dotenv(dotenv_file)
ALLOWED_HOSTS = ['0.0.0.0', 'localhost', '127.0.0.1', 'myapp.herokuapp.com']
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'myappdb',
'USER': 'postgres',
'PASSWORD': 'MyAppPassword',
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)