Django模板语言详解:语法、过滤器与实战应用

何川
何川
发布时间:2026-10-13| 2人浏览过
原创

本文深入解析Django框架中的Template语言,详细阐述其核心语法结构,包括条件判断(if/elif/else)与循环控制(for)指令的具体用法及内置变量属性。同时系统梳理了常用模板过滤器,如字符串处理、数据格式化及逻辑判断等,帮助开发者高效构建动态Web页面。

Django框架与模板语言概述

Django是一款采用Python语言开发的开源Web应用框架,遵循MTV(模型-视图-模板)架构模式。该框架最初由劳伦斯出版集团开发,用于管理其旗下的新闻内容网站,本质上属于内容管理系统(CMS)软件。自2005年7月以BSD许可证发布以来,Django以比利时爵士吉他手Django Reinhardt的名字命名,已成为Python生态中极具影响力的Web框架。

本文将重点介绍Django模板语言的核心功能与使用细节,帮助读者掌握如何在项目中有效利用模板进行数据展示。

Django模板语言拥有独立的语法体系,专门用于处理数据的简单展示与逻辑控制,确保视图层与业务逻辑的有效分离。

模板核心语法:条件与循环

掌握Django模板的常用语法是开发的基础,主要涉及条件判断与循环遍历两大核心指令集。

条件判断指令允许模板根据变量状态动态渲染内容。基本语法为{% if 条件 %}...{%endif%}。支持多分支判断时,可使用{% if 条件 %}...{%elif 条件 %}...{%endif%}结构。若需处理默认情况,可结合else关键字,写作{% if 条件 %}...{%elif 条件 %}...{%else%}...{%endif%}。此外,还支持成员资格检查,如{% if a in b %}...{%endif%},用于判断元素是否存在于序列中。

条件判断指令详解


{% if 条件 %}...{%endif%}
{% if 条件 %}...{%elif 条件 %}...{%endif%}
{% if 条件 %}...{%elif 条件 %}...{%else%}...{%endif%}
{% if a in b %}...{%endif%}

循环指令用于遍历列表或查询集,基本语法为{%for %} ...{%endfor}。在循环体内,Django提供了丰富的内置变量以辅助控制逻辑:{% forloop.counter%}显示当前循环次数,从1开始计数;{% forloop.counter0%}同样显示循环次数,但索引从0开始;{% forloop.recounter%}提供反向计数,最终值为1;{% forloop.recounter0%}为反向计数且最终值为0。布尔值变量{% forloop.first%}和{% forloop.last%}分别标识是否为第一次或最后一次循环。{% forloop.parentloop%}用于访问父级循环的forloop对象,适用于嵌套循环场景。

循环指令与内置变量


{%for %} ...{%endfor}
{% froloop.counter%}用来显示当前循环的计数器,从1开始
{% forloop.counter0%}用来显示当前循环的计数器,从0开始
{% froloop.recounter%} 和counter相反,反过来计算的计数值,至1结束
{% forloop.recounter0%}和counter0相反,反过来计算的计数值,至0结束
{% forloop.first%}返回的是布尔值,
{% forloop.last%}返回的是布尔值,
{% forloop.parentloop%}用来引用上一层循环(父级循环)的forloop对象
{% cycle%}:网页出现表格是会根据奇、偶行数存放不一样的设置,比如颜色。
{% empty%} :如果for 循环式空字符串,就会导致for循环执行不下去,但是页面不能空着,就让他处理下面的这个语句。
{% now 格式字符串 %} : 显示当前日期时间的功能,不用从后端传入。格式字符串:'D M Y hⓂ️s a'
{% lorem %} :不知道什么内容时的填充符,表示一段没有意义的文字。{% lorem [count][method][random]%} count是次数,method可以设置为 w (表示文字),p (表示段落),最后加上random回随机出现这些字符串

除了基础指令,Django模板还提供了丰富的过滤器及其他语法标识符,用于对变量进行格式化、转换或逻辑处理。

常用模板过滤器指南

过滤器名 用法 范例
addslashes 为字符串需要的地方加上转义字符 {{mes|addslashes}},如mes的内容为"It's a cat",会变成“It' a cat ”
capfirst 字符串首字母大写
center,ljust,rjust 为字符串内容加上指定空格后居中,靠左,靠右 {{mes|cener:"15"}},mes居总,占据15个字符
cut 在字符串中删除指定的子字符串 {{mes|cut: ' '}} ,移除所有空格字符串
date 设置日期显示时间 {{value|date:" D d M Y"}} value为datetime的标准格式, 可以用date来指定详细的格式和内容,
default 如果没有值,设置默认值 {{mes|default :"没有信息“}}
dictsort 为字典形式内容的变量排列顺序 {{value|dictsort :"name"}},以名字字段来作为排序的依据
dictsortreversed 上一指令的反向排序
divisibleby 测试数值数据是否可被指定的数整除 {{value|divisibleby:5} 测试value是否可被5整除
escape 把字符串的HTML标记变成显示用的的字符串 {{msg|escape}},msg中若有HTM标志,则会失去作用且被以文字的形式显示出来
filesizeformat 以人们习惯的方式显示文件大小的格式(KB,MB) {{value| filesizeformat}}
first 只取出列表中的第一个数据 {{value|first}}
last 只取出列表中的最后一个数据 同上
length 返回列表的数据长度 同上
length_is 测试数据是否为指定长度 {{value | length_is: "3"}}, 测试values的长度是否为3
floatformat 以指定的浮点数格式来显示数据 {{value|floatformat:3}}指定三位小数位
linebreaks 把文字内容的换行符号转换为HTML的
和
{{msg|linebreaks}}
linebreaksbr 把文字内容的换行符号转换为HTML的
{{msg|linebreaksbr}}
linenumber 为显示的文字加上行号 {{msg|linenumbers}}
lower/upper 把字符串的全部内容转换为小写/大写 同上
random 以随机数将前面的数据内容显示出来 {{values | random}}
safe 标记字符串为安全的,不需要再处理转义字符 {{msg|sage}}
slugify 把字符串内的空格编程”-“,让字符串可以安全地放在网址栏 {{msg|slugify}},若原本的msg为”It's a cat",则会返回“Its-a-cat"
striptags 把所有的HTML标记都删除
truncatechars 把过长的字符串裁切成指定长度,同时最后面的3个字符会转换成”..." {{msg|truncatechars:20}}
wordcount 计算字数 {{msg|wordcount}}
yesno 按照值得内容是True,False,None,显示出有意义的内容 {{value|yesno:"对的,错了,不知道"}}

通过合理使用条件判断、循环指令及各类过滤器,开发者可以灵活控制页面内容的展示逻辑,提升Web应用的开发效率与用户体验。

本文对Django模板语言的核心语法与过滤器进行了系统梳理,涵盖了从基础判断到高级过滤器的实际应用。如需了解更多Django模板相关内容,建议参考本站历史文章或相关推荐内容,感谢支持。

相关标签:

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

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 算法库。