在heroku上运行的django应用程序上的查询结果为空,但在开发服务器上为正常结果

时间:2018-12-16 11:19:49

标签: django heroku

我今天才开始使用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')}

为什么在不同的服务器上访问同一数据库会产生不同的结果?我应该检查什么?

1 个答案:

答案 0 :(得分:1)

但是它没有使用相同的数据库。您已使用dj_database_url并将 default 设置为AWS db;但是您的Heroku设置中可能配置了一个实际的数据库,因此将填充数据库环境变量,因此将使用db代替默认数据库。

如果要对数据库进行硬编码,则应直接在设置中执行此操作,而不要完全不使用dj_database_url。