Django项目页面正常加载但无法从PostgreSQL获取数据求助
问题排查与解决
1. 视图函数中的语法错误(最直接原因)
你的views.py里有两处明显错误:
- 多余的逗号:
services = Service.objects.all().order_by("index"),末尾的逗号会让services变成一个元组(而非Django的QuerySet),模板无法正常遍历这个元组内的QuerySet。 - 上下文字典键值颠倒:
{services : services}应该用字符串作为键(对应模板里的services变量名),正确写法是{'services': services}。
修正后的views.py代码:
def services_view(request): services = Service.objects.all().order_by("index") return render(request, "service.html", {'services': services})
2. 其他需要确认的点
如果修正后仍无法读取数据,检查以下内容:
- 数据库是否存在数据:通过
python manage.py shell执行Service.objects.all(),确认是否能查询到数据。如果结果为空,需要先创建测试数据(比如通过后台admin或shell手动添加)。 - 迁移是否正确执行:重新执行迁移命令,确保模型同步到PostgreSQL数据库:
python manage.py makemigrations python manage.py migrate - Media文件配置:由于
icon是ImageField,需要确保settings.py中配置了MEDIA相关路径,且开发环境中正确处理了media文件的访问:# settings.py MEDIA_ROOT = BASE_DIR / 'media' MEDIA_URL = '/media/' # urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 你的其他路由配置 ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
内容的提问来源于stack exchange,提问作者HP Luwang
相关产品推荐
相关产品推荐

