我今天才开始使用heroku。我正在测试一个Web应用程序,使用本地开发服务器和heroku的django应用程序得到了不同的结果。我已经通过运行django开发网络服务器导入数据库。由于postgredb使用amazonaws网址,因此我假设此数据可用于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')}
为什么在不同的服务器上访问同一数据库会产生不同的结果?我应该检查什么?
答案 0 :(得分:1)
但是它没有使用相同的数据库。您已使用dj_database_url
并将 default 设置为AWS db;但是您的Heroku设置中可能配置了一个实际的数据库,因此将填充数据库环境变量,因此将使用db代替默认数据库。
如果要对数据库进行硬编码,则应直接在设置中执行此操作,而不要完全不使用dj_database_url。