如何在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
相关产品推荐
相关产品推荐

