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

Django模板include引入后循环失效问题求助

问题描述

我是Python和Django新手,当前在页面中通过include标签引入另一个模板文件,但模板内用于展示数据的循环无法执行。单独运行被引入的includes/fn_base_template.html时,循环可正常加载数据。由于需要在多个页面复用该模块,特求助排查问题。

主模板代码

{% extends "base.html" %}
{% block title %}
  
{% endblock %}
{% block content %}
  <div class="container">
    <h1>График замен ФН</h1>
    <style>
        {
        font-size: 12px; /* Adjust the font size as needed */
      }
    </style>

        <div class="col-md-2">
          <div class="form-group">
            <label>&nbsp;</label>
            <button type="submit" class="btn btn-primary btn-block">Применить фильтры</button>
          </div>
        </div>
      </div>
    </form>


    {% include "includes/fn_base_template.html" with fn_replacements_page=fn_replacements_page %}

    {% include "includes/paginator.html" with fn_replacements_page=fn_replacements_page %}

{% endblock %}

被引入模板(includes/fn_base_template.html)代码

<div class="table-responsive">
  <table class="table table-bordered">
    <thead>
      <tr>
        <th class="col-md-2">Название объекта</th>
        <th class="col-md-1">SAP</th>
        <th class="col-md-2">Юридическое лицо</th>
        <th class="col-md-2">Адрес объекта</th>
        <th class="col-md-1">Номер позиции</th>
        <th class="col-md-1">Модель ФР</th>
        <th class="col-md-1">Серийный номер ФР</th>
        <th class="col-md-1">Серийный номер ФН</th>
        <th class="col-md-1">Дата первичной регистрации</th>
        <th class="col-md-1">Дата замены</th>
      </tr>
    </thead>
    <tbody id="table-body">
      {% for fn_replacement in fn_replacements_page %}
        <tr>
          <td class="table-body-cell">{{ fn_replacement.name_object }}</td>
          <td class="table-body-cell">{{ fn_replacement.sap }}</td>
          <td class="table-body-cell">{{ fn_replacement.legal_entity }}</td>
          <td class="table-body-cell">{{ fn_replacement.addres_object }}</td>
          <td class="table-body-cell">{{ fn_replacement.nomer_pos }}</td>
          <td class="table-body-cell">{{ fn_replacement.model_fr }}</td>
          <td class="table-body-cell">{{ fn_replacement.sn_fr }}</td>
          <td class="table-body-cell">{{ fn_replacement.sn_fn }}</td>
          <td class="table-body-cell">{{ fn_replacement.date_fp }}</td>
          <td class="table-body-cell">{{ fn_replacement.replacement_date }}</td>
        </tr>
      {% endfor %}
    </tbody>
  </table>
</div>
排查与解决步骤
  • 检查视图上下文传递:确认主模板对应的视图函数中,是否将fn_replacements_page变量正确传入模板上下文。单独运行被引入模板能正常显示,说明模板逻辑没问题,核心问题大概率是主模板未拿到变量。
  • 核对变量名一致性:确认include语句里的fn_replacements_page,和被引入模板循环中使用的变量名完全一致,Django模板变量区分大小写和下划线,避免拼写错误。
  • 调试模板变量:在主模板中临时添加{{ fn_replacements_page|length }}或{% debug %}标签,查看变量是否存在、是否有数据,快速定位变量传递问题。
  • 修复模板语法错误:主模板里存在未闭合的<form>标签(仅写了</form>却无起始标签),这种语法错误会导致模板渲染中断,先修复该问题再测试循环是否正常。
  • 简化场景测试:暂时删除主模板中多余的样式、按钮等代码,只保留include标签,逐步排查是否是其他代码干扰了模板渲染。

内容的提问来源于stack exchange,提问作者Николай Екатеринин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:47:11