Django模板过滤器实战:从基础语法到常用技巧

Evan
Evan
发布时间:2026-10-15 | 4人浏览过
原创

本文深入解析Django模板系统中的过滤器功能,涵盖基础语法、管道符号链式调用及参数传递技巧。通过views.py与index.html的完整代码示例,演示date、time、lower、add等常用过滤器的实际应用,并详细阐述自动转义机制及其对HTML安全的影响,帮助开发者掌握Django模板渲染的核心细节。

引言:

前文已介绍Django中模板变量的基本用法,其操作十分简便。那么,是否存在更高级的变量处理方式呢?答案是肯定的,本文将重点讲解Django模板中的过滤器功能。

1.过滤器

(1)核心原理:

过滤器的主要作用是对变量进行预处理。在最终渲染输出之前,过滤器会根据既定逻辑处理变量,生成结果后替换原变量进行展示。

  • 基础语法示例:{{ fruits|lower }}
  • 支持通过管道符号进行链式调用,这类似于嵌套函数的使用方式。例如,实现先将所有字符转为小写,再将首字母大写的功能。
  • 链式调用语法:{{fruits|lower|capfirst}}
  • 过滤器支持接收参数。在过滤器名称后使用冒号,接着用双引号包裹参数值。例如,使用cut过滤器去除字符串中的所有空格,语法为:{{fruits|cut:" "}}
  • 注意:在使用参数时,冒号与参数之间严禁包含空格,必须紧密相连。

(2)Django实战应用——常用过滤器示例:

①项目目录下的views.py文件配置:


from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

from datetime import datetime
def index(request):
    test="THIS IS A LIST!"
    list=["A","B","C","D","E"]
    data={
        'test':test,
        'xx':'',
        'num1':1,
        'num2':2,
        'list':list,
        'now':datetime.now(),
        'html':'<h1>hello django!!!</h1>',
        'float':3.1415926
    }
    return render(request, "index.html", data)

②项目目录下templates模板文件夹中的index.html模板文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试!</title>
</head>
<body>

{#没做处理的变量:#}
{{ test }}<br>

{#设置了默认值的变量  在这个值被django认为是False的时候会使用此默认值。比如:空字符串,None。#}
{{ xx|default:'xxxxx' }}<br>

{#设置了只有为None时才使用默认值的变量#}
{{ xx|default_if_none:'aaaaa'}}<br>

{#变为小写后的变量#}
{{ test|lower }}<br>

{#先变为小写再将首字母大写后的变量#}
{{ test|lower|capfirst }}<br>

{#两个数字变量相加   add:字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串#}
{{ num1|add:num2 }}<br>

{#两个字符串变量相加#}
{{ test|add:xx }}<br>

{#列表变量的第一个元素#}
{{ list|first }}<br>

{#列表变量的最后一个元素#}
{{ list|last }}<br>

{#默认的data日期时间格式#}
{{ now|date }}<br>
{#默认的time时间格式#}
{{ now|time }}<br>
{#这是data过滤器的年月日24小时制时间格式#}
{{ now|date:'Y/m/d/H:i:s' }}<br>
{#这是time过滤器的时分秒12小时制时间格式#}
{{ now|time:'h:i:s' }}<br>

{#这是字符串的join方法  跟python中join一样的用法#}
{{ list|join:'oooo' }}<br>

{#这是字符串的长度方法#}
{{ test|length }}<br>

{#这是列表的长度是否为4#}
{{ list|length_is:4 }}<br>

{#下面这俩有xxx.html类型的,针对html,截断标签中的字符,而不会截断标签#}
{#这是字符串只显示4个字符,其余省略(但是占3位)#}
{{ test|truncatechars:7 }}<br>
{#这是字符串只显示2个单词,其余省略(不占位)#}
{{ test|truncatewords:2 }}<br>

{#这是字符串的切片#}
{{ test|slice:'1:4' }}<br>

{#这是列表的切片#}
{{ list|slice:'2' }}<br>

{#这是含html标签的字符串#}
{{ html }}<br>

{#这是去掉字符串中的html标签#}
{{ html|striptags }}<br>

{#这是关掉自动转义,使字符串中html标签生效#}
{{ html|safe }}<br>

{#这是没做处理的小数#}
{{ float }}<br>
{#这是保留了一位小数#}
{{ float|floatformat }}<br>
{#这是保留了两位小数#}
{{ float|floatformat:'2' }}

</body>
</html>

③运行效果展示:

date和time过滤器的格式规范:

拓展——简介自动转义机制:

什么是自动转义? 自动转义是指将变量中的特殊字符(如左箭头<、右箭头>)转换为对应的HTML实体代码。此举旨在处理潜在的不安全变量,提升页面安全性。


<:转义成&lt;
>:转义成&gt;
‘:转义成&#39;
“:转义成&quot;
&:转义成&amp;

至此,关于Django零基础入门之常用过滤器详解的内容介绍完毕。如需了解更多Django过滤器相关内容,请查阅本站过往文章或继续浏览后续教程,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表