You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:15:40