我有一个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)
答案 0 :(得分:0)
我设法弄清楚了。我必须遵循以下步骤:
1 /在我的应用程序文件夹中创建一个[registered]
文件夹
2 /运行以下命令以json格式将我的数据转储到新创建的文件夹中:dumps
3 /然后python manage.py dumpdata > myapp/dumps/myapp.json