Django模板之模板变量过滤器

  在Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。

过滤器规则:

·         过滤器的语法: {{ value|filter_name:参数 }}

·         使用管道符"|"来应用过滤器。

注意事项:

a.    过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。

b.    过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。

c.     过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:‘, ‘ }}

   d.    ‘|‘左右没有空格 在Django的模板语言中,通过使用 过滤器 来改变变量的显示;Django的模板语言中提供了大约六十个内置过滤器。

过滤器规则:

·         过滤器的语法: {{ value|filter_name:参数 }}

·         使用管道符"|"来应用过滤器。

注意事项:

a.    过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。

b.    过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。

c.     过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:‘, ‘ }}

d.    ‘|‘左右没有空格

常用过滤器:


lower


将变量全部转换成小写


{{ value|lower}}


如果value传来的字符串是"Name",会显示"name"


upper


将变量全部转换成大写


{{ value|upper}}


如果value传来的字符串是"Name",会显示"NAME"


default


变量设置默认值


{{ value|default:"nothing"}}


如果value没有传值或者值为空的话就显示nothing


length


返回字符串和列表变量的长度


{{ value|length }}


如 value=[‘a‘, ‘b‘, ‘c‘, ‘d‘]的话,就显示4


safe


对HTML标签和JS等语法标签进行自动转义


{{ value|safe}}


比如:value="<script>alert(‘123‘)</script>"


filesizeformat


将值格式化为一个文件大小(例如 ‘13 KB‘, ‘4.1 MB‘, ‘102 bytes‘…)


{{ value|filesizeformat }}


如果 value 是 123456789,输出将会是 117.7 MB。


slice


切片


{{ value|slice:"2:-1" }}


如果 value="hello world"


date


日期时间格式化


{{ value|date:"Y-m-d H:i:s"}}


如果 value=datetime.datetime.now()


truncatechars


截取字符串


{{ value|truncatechars:9}}


如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾,同时是数量包含在参数个数中


truncatewords


截取单词数


{{ value|truncatewords:3}}


例如:‘hello girl hi baby yue ma’,得到的结果是 ‘hello girl h1...‘


cut


移除与给出参数相同的字符串


{{ value|cut:‘ ‘ }}


如果value为‘i love you‘,那么将输出‘iloveyou‘


join


按给定参数字符拼接


{{ value|join:"+" }}


如果value为[‘i‘, ‘love‘, ‘you‘],那么将输出‘i+love+you‘

过滤器safe

    Django的模板中在进行模板渲染的时候会对HTML标签和JS等语法标签进行自动转义,这样是为了安全,django担心这是用户添加的数据,比如如果有人给你评论的时候写了一段js代码,这个评论一提交,js代码就执行啦,这样你是不是可以搞一些坏事儿了,写个弹窗的死循环,那浏览器还能用吗,是不是会一直弹窗啊,这叫做xss攻击,所以浏览器不让你这么搞,给你转义了。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义

过滤器案例:

  lower/upper

filtertest.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>模板变量过滤器filter测试</title>
 6 </head>
 7 <body>
 8 <div>
 9     <h1>{{ str }}</h1>
10     <h1>{{ str|lower }}</h1>
11     <h1>{{ str|upper }}</h1>
12 </div>
13 </body>
14 </html>

   views.py

1 def filtertest(request):
2     s="FILter"
3     return render(request,"filtertest.html",{"str":s})

渲染效果:

default

filtertest.html

1 <h1>{{ name|default:"yang" }}</h1>
2 <h1>{{ m|default:"yang" }}</h1>

  views.py

1 def filtertest(request):
2     return render(request,"filtertest.html",{"m":"100"})

渲染效果:

原文地址:https://www.cnblogs.com/open-yang/p/11221499.html

时间: 2024-11-10 00:15:21

Django模板之模板变量过滤器的相关文章

Django 模板中 变量 过滤器 标签 的使用方法

一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的时候,查找的顺序是什么样子呢?        a.字典查找,例如:foo["var1"]        b.属性查找,例如:foo.bar        c.方法查找,例如:foo.bar()        d.list-index查找,例如foo[bar] 注意:方法查找比一般的查找要复杂一些 (1

Django(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

模板层:变量.过滤器.标签.自定义标签和过滤器 将页面的设计和Python的代码分离开会更干净简洁更容易维护. 我们可以使用 Django的 模板系统 (Template System)来实现这种模式 # django模板修改的视图函数 def current_time(req): from django.template import Template,Context now=datetime.datetime.now() t=Template('<html><body>现在时刻

Django——模板路径 模板变量 常用过滤器 静态文件的使用

Django 模板路径 模板变量 过滤器 静态文件的加载 模板的路径,有两种方法来使用 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明 在每一个APP中创建templates,然后在settings的INSTALLED_APPS中声明 模板变量的使用 语法:   {{ 变量名 }} 命名由字母和数字以及下划线组成,不能有空格和标点符号 可以使用字典.模型.方法.函数.列表 不要和python或django关键字重名 变量和查找 注:1.如果data是

python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 注: 本节代码是基于 Django 1.8,但 Django 1.4 - Djagno 1.9 操作流程也是一样的. 后文给出示例代码可以在 Django 1.4.x 到 Django 1.9.x 上运行. 不过还是强调一点,一点要动手敲代码!不要偷懒哦,动手才能学到真东西. 1. 创建一个 zqxt_tmpl 项目,和一个 名

django 模板中通过变量替代key取字典内容

模板中通过变量替代key取字典内容 templatetags/├── get_item.py├── __init__.py ###get_item.py # coding=utf-8 from django import templatefrom django.utils.safestring import mark_safefrom django.template.base import resolve_variable, Node, TemplateSyntaxError register

Django中模板总结[模板语言,模板继承,CSRF攻击,反向解析]

模板 概述 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观,而不是程序逻辑.模板的设计实现了业务逻辑view与显示内容template的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用. 创建模板文件夹 在项目的文件里面定义一个templates文件夹 在创建的文件夹里面再创建一个文件夹为每个应用的html文件夹 起名为和应用名同名的文

Django框架之模板语法(重要!)

一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 1.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键是句点字符  .(也就是点) views.py def index(request): name = "hello haiyan" i = 200 l = [11,22,33,44,55] d = {"name":"haiyan","age

django之Template(模板)

模板 从名字上来说,模板是什么,是供我们使用的一些规范,你可以在这上面添加一些东西,是基于这个物体的,而不是凭空创造的. 至于我们为什么需要模板,在这里利用别人的一些文字做一些介绍,如下: 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It i

Django基础篇--模板和路由分发

Django模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 1)BACKEND: 指定模板的搜索引擎,不用改动 2)DIRS: 指定模板存放的目录 DIRS=[' index.temp' ,'music.temp'] 但是,如果DIRS中为空的话,那么django会自动搜索每个应用中的templates的文件夹作为模板的管理目录 推荐:DIRS保持空,但必须在每个应用中