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> </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,提问作者Николай Екатеринин
相关产品推荐
相关产品推荐

