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

如何在Django的HTML模板中通过for循环展示模型的前3条数据

没问题,这事儿很简单,分两步改就能实现展示前3条数据的需求:

解决方案

1. 修改视图文件(views.py)

首先把视图里获取单条数据的逻辑改成获取前3条数据,Django的QuerySet支持Python切片语法,用[:3]就能轻松拿到前3条记录。修改后的代码如下:

from django.shortcuts import render
from .models import CompanyInformation

def aboutpage(request):
    # 获取前3条CompanyInformation数据
    company_list = CompanyInformation.objects.all()[:3]
    context={
        'company_list' : company_list,
    }
    return render(request, 'aboutpage.html', context)

我把变量名改成了company_list,更符合它是一个数据列表的语义,你也可以保留原命名,但建议用更清晰的名字方便维护。

2. 修改HTML模板文件

接下来在模板里用Django的{% for %}模板标签循环遍历这个列表,逐个渲染每条数据的字段。替换原来的单条数据展示代码:

{% block body_block %}
    {% for company in company_list %}
        <div class="company-item"> <!-- 可以加个容器样式区分每条数据 -->
            <p class="redtext">{{ company.name }}</p>
            <p class="redtext">{{ company.details }}</p>
            {% if company.website %} <!-- 可选:仅当网站字段有值时展示 -->
                <p class="redtext">{{ company.website }}</p>
            {% endif %}
            <!-- 按需添加社交平台字段的展示,比如Facebook/Instagram等 -->
        </div>
    {% empty %} <!-- 可选:没有数据时显示提示 -->
        <p class="redtext">暂无公司信息</p>
    {% endfor %}
{% endblock body_block %}

额外说明

  • 切片[:3]会自动兼容数据不足3条的情况,比如只有2条数据,循环只会渲染现有数据,不会报错。
  • 如果你需要按特定顺序排序后再取前3条,可以给QuerySet加上order_by,比如CompanyInformation.objects.order_by('-id')[:3](按ID倒序,取最新的3条)。
  • 我添加的{% if %}和{% empty %}逻辑是为了让模板更健壮,你可以根据实际需求选择保留或删除。

内容的提问来源于stack exchange,提问作者Manas S. Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:34:12