首页 > 解决方案 > 在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')}

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

标签: djangoheroku

解决方案


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

如果您想对数据库进行硬编码,您应该直接在设置中执行此操作,而根本不使用 dj_database_url。


推荐阅读