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

如何在Django继承模板间将子模板变量传递至父模板链接?

实现子模板变量传递到父模板链接的方法

根据不同模板引擎,有以下几种直接实现方式:

Jinja2(Python Flask/Django通用逻辑)

  • 父布局模板直接使用变量占位:
    <!-- 父布局模板 -->
    <a href="/edit/{{ doc_name }}">编辑文档</a>
    
  • 子模板(documentPage)继承时给变量赋值:
    {% extends "layout.html" %}
    {% set doc_name = name %} <!-- name为子模板自身的变量 -->
    
    更灵活的块传递方式:
    父模板:
    <a href="/edit/{{ edit_doc_name }}">编辑文档</a>
    {% block doc_vars %}{% endblock %}
    
    子模板:
    {% extends "layout.html" %}
    {% block doc_vars %}
        {% set edit_doc_name = name %}
    {% endblock %}
    

Thymeleaf(Java Spring Boot)

  • 父模板定义带参数的片段或直接使用变量表达式:
    <!-- 父布局模板 -->
    <a th:href="@{/edit/{docName}(docName=${docName})}">编辑文档</a>
    
  • 子模板继承时传递变量:
    <html th:replace="~{layout :: layout (docName=${name})}">
        <!-- name为子模板自身变量 -->
    </html>
    
    或者父模板明确接收参数:
    父模板:
    <div th:fragment="layout(docName)">
        <a th:href="@{/edit/{docName}(docName=${docName})}">编辑文档</a>
        <div th:replace="~{:: content}"></div>
    </div>
    
    子模板:
    <div th:replace="~{layout :: layout(docName=${name})}">
        <div th:fragment="content">
            <!-- 子模板内容区域 -->
        </div>
    </div>
    

ASP.NET Razor

  • 父布局模板使用ViewBag传递变量:
    <!-- _Layout.cshtml -->
    <a href="/Edit/@ViewBag.DocName">编辑文档</a>
    
  • 子模板设置ViewBag后继承布局:
    @{
        ViewBag.DocName = Model.Name; // Name为子模板模型的变量
        Layout = "_Layout.cshtml";
    }
    

内容的提问来源于stack exchange,提问作者Dunham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:50:35