gpt4 book ai didi

python-3.x - 在 Heroku 上使用 Django 运行 PostGIS

转载 作者:行者123 更新时间:2023-12-04 07:36:55 26 4
gpt4 key购买 nike

尝试在 Heroku 上运行 GeoDjango 应用程序,这真是一项艰巨的任务。在努力解决各种问题之后,我遇到了一个似乎无法解决的问题。

  File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/fields/__init__.py", line 673, in db_parameters
type_string = self.db_type(connection)
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/gis/db/models/fields.py", line 105, in db_type
return connection.ops.geo_db_type(self)
AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'

我已正确使用 dj-database-url 设置引擎,但我仍然看到错误

我添加了一个打印语句来输出我的数据库设置,因为它们正在被 py 解释

settings.py 中:

if os.getenv('DYNO'):
GDAL_LIBRARY_PATH = os.path.expandvars(os.getenv('GDAL_LIBRARY_PATH'))
GEOS_LIBRARY_PATH = os.path.expandvars(os.getenv('GEOS_LIBRARY_PATH'))
DATABASES['default'] = dj_database_url.parse(os.getenv('DATABASE_URL'),'django.contrib.gis.db.backends.postgis')
print(DATABASES['default'])

这是输出 heroku 服务器正在解释为我的 DATABASES['default'] 凭证的打印语句

{'NAME': 'name', 'USER': 'usr', 'PASSWORD': 'pw', 'HOST': 'herokuec2host.amazonaws.com', 'PORT': 5432, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.contrib.gis.db.backends.postgis'}

感谢任何帮助。我知道关于这个问题的各种类似的 stackoverflow 帖子,但是我研究过的所有解决方案都没有解决这个问题——所以再次询问。

最佳答案

Geodjango 需要连接“postgis://...”,但 heroku 将数据库设置更改为“postgres://”。所以,如果你在 settings.py 中将 DATABASES 变量移动到底部,问题就解决了。快乐的黑客:)

django_heroku.settings(locals())

DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': '*',
'USER': '*',
'PASSWORD': '*',
'HOST': '*',
'PORT': '5432',
},
}

关于python-3.x - 在 Heroku 上使用 Django 运行 PostGIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com