Django+PostgreSQL开发:视图中Objects.all()无法获取数据
解决Django视图无法将PostgreSQL数据渲染到HTML模板的问题
嘿,我一眼就揪出问题所在啦!你代码里的核心bug出在HTML模板的判断条件和上下文变量不匹配,导致模板根本没去遍历你传过来的数据库数据,直接跳到了“无数据”的分支。
问题根源
你在index视图里把查询到的分类数据存在Catégorie_list变量中并传给了模板,但在HTML里却用{% if articles %}来判断是否有数据——articles这个变量根本没在上下文里定义过,所以这个条件永远为假,自然看不到数据。
修复方案
只需要把模板里的判断条件改成检查Catégorie_list即可,修改后的HTML代码如下:
<div class="row"> {% if Catégorie_list %} {% for category in Catégorie_list %} <div class="col-md-6 col-lg-4 mb-4"> <div class="card listing-preview"> <img class="card-img-top" src="{{ category.photo_main.url }}" alt=""> <div class="card-body"> <div class="listing-heading text-center"> <h4 class="text-primary" >{{ category.désignation }}</h4> </div> <hr> <a href="article.html" class="btn btn-primary btn-block">Voir la catégorie</a> </div> </div> </div> {% endfor %} {% else %} <div class="col-md-12"> <p>Aucune catégorie disponible</p> </div> {% endif %} </div>
额外检查点(如果修复后仍有问题)
- 确认PostgreSQL数据库的
Catégorie表中确实有有效数据(你说Django Shell能拿到数据,这一步应该没问题) - 若只想展示已发布的分类,可以把视图里的查询语句改成过滤已发布数据:
Catégorie_list = Catégorie.objects.filter(est_publié=True) - 确保你的Django应用已经添加到
settings.py的INSTALLED_APPS中,且执行过makemigrations和migrate命令
内容的提问来源于stack exchange,提问作者Amal EL Briki
相关产品推荐
相关产品推荐

