django - 在heroku上运行django应用程序时查询结果为空,但在开发服务器上结果正常
问题描述
我今天才开始使用heroku。我正在测试一个 Web 应用程序,并从本地开发服务器和 heroku 使用 django 应用程序得到了不同的结果。我通过运行 django 开发网络服务器导入了数据库。由于 postgredb 使用 amazonaws url,我假设这些数据可用于 heroku 上的生产服务器。
从我的本地 django 网络服务器,以下搜索产生正确的结果:
from django.db.models import CharField
from django.db.models.functions import Lower
CharField.register_lookup(Lower, "lower")
import logging
logger = logging.getLogger('testlogger')
logger.info('This is a simple log message')
items_set = []
if request.method == 'POST':
print(request.POST.get)
form = CGHSMetaForm(request.POST)
name = request.POST.get('name').lower()
items_set = CGHSRates.objects.filter(
name__lower__contains=name).order_by('name')
print(items_set)
logger.info(items_set)
else:
form = CGHSMetaForm()
return render(
request, 'app/cghs_search.html', {
'rnd_num': randomnumber(),
'form': form,
'items': items_set,
})
我得到以下结果:
Code
Name
Rate
1098
After Mastectomy (Reconstruction)Mammoplasty
Rs 13800.0
364
Local mastectomy-simple
Rs 14548.0
251
Mastoidectomy
Rs 17193.0
然而,在 heroku 上,我收到一个空结果。
该数据库是默认的 heroku 数据库,一个 postgre db,由 settings.py 中的以下设置定义:
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://kpnbcpyqtxxjqu:2c86exffsdff0d789e7f3b29d70sfsfsffs7be197sffsfsffb233@ec2-53-22-46-10.compute-1.amazonaws.com:5432/dful1l3ra7nknn')}
为什么在不同的服务器上访问相同的数据库会产生不同的结果?我应该检查什么?
解决方案
但它没有使用相同的数据库。您已经使用dj_database_url
并将默认设置为 AWS db;但是您的 Heroku 设置中可能配置了一个实际的数据库,因此将填充数据库环境变量,因此将使用该数据库而不是默认数据库。
如果您想对数据库进行硬编码,您应该直接在设置中执行此操作,而根本不使用 dj_database_url。
推荐阅读
- npm - SyntaxError:在 Centos 上安装 chromeless nodejs 时出现意外标识符
- c# - 如何修复 DbContext 已针对异步场景进行处理?
- c++ - ofstream 将额外的零字节写入 Unix 服务器上的文件
- dask - 控制在调度程序中加载块的平局选择?
- angular - Angular 5 路由 - 标题和导航栏路由问题
- html - 如何在两个并排图像上重叠文本
- out-of-memory - Opennlp OutOfMemoryError:具有 16GB RAM 的 Java 堆空间
- c# - 如何关闭表单并重新打开它?
- unity3d - 新场景下的 Unity 调用方法
- javascript - jQuery对话框不能第二次调用