Django模板中include标签的使用与参数传递详解

周末不加班
周末不加班
发布时间:2026-10-13| 6人浏览过
原创

本文详解Django模板中{% include %}标签的用法,解决网页公共头部与底部的复用问题。通过视图传递上下文变量及利用with语法动态指定参数,实现不同页面头部样式的灵活切换,避免代码冗余。

前言

多数网站页面都包含固定的开头与结尾部分。在Django框架中,处理此类公共区域的最佳实践是使用{% include %}标签,将其嵌入各个模板文件中,从而实现代码复用。

include标签使用

假设存在如下模板文件index.html,其代码结构如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<div>网页公共头部部分</div>
<h2> 网页body部分 </h2>
<div>网页公共底部部分</div>
</body>
</html>

Web开发者通常了解,大部分网页的公共头部和底部代码在各页面中保持一致。因此,将这些部分单独提取为独立的HTML文件,在修改时无需逐个页面调整。在Django中,推荐采用以下实现方式:

top.html

<div>网页公共头部部分</div> 

bottom.html

<div>网页公共底部部分</div> 

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
 <meta charset="UTF-8"> 
 <title>Title</title> 
</head> 
<body> 
{% include 'top.html' %} 
<h2> 网页body部分 </h2> 
{% include 'bottom.html' %} 
</body> 
</html>

利用Django模板引擎的{% include %}语法,可将独立模板嵌入当前页面。有开发者疑问:视图传递给主模板的上下文变量,在被包含的子模板中是否可用?答案是肯定的,可以直接使用。

假设存在如下视图函数定义:

def index(request): 
 return render(request, 'index.html', {'a': 100, 'b': 200}) 

该Django视图函数负责将数据传递给模板并完成渲染。

对top.html进行如下修改:

<div>网页公共头部部分:{{ a }}</div> 

上述用法完全可行。

此处存在一个典型问题:若所有页面均引用公共头部top.html,但1.html、2.html、3.html所需的头部样式可能各不相同,此时top.html可能需要如下结构:

<div classs='acss'>网页公共头部部分</div> 

而对于5.html、6.html,其头部样式要求为:

<div class='bcss'>网页公共头部部分</div> 

 

显然,若直接通过{% include %}包含公共头部,会导致部分页面样式显示异常。既然参数存在差异,{% include %}允许向被包含模板传递参数。利用with语法即可解决此问题,具体方案如下:

{{ % include 'top.html' with mycss='acss' % }} 

top.html可修改为:

<div class='{{mycss}}'>网页公共头部部分</div> 

通过{% include %}动态指定被包含模板中的部分参数,top.html便无需因细微样式差异而编写多份代码,实现了真正的复用。

总结

以上为本文全部内容,希望本文对您的学习或工作具有参考价值。如有疑问欢迎留言交流,感谢支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。