码迷,mamicode.com
首页 > 其他好文 > 详细

flask过滤器

时间:2019-02-10 23:17:38      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:字符   mod   情况下   特殊符号   需要   首字母   整数   turn   div   

什么是过滤器

1 . 有时候当我们想要在模板中处理一些变量的时候,那么就需要一种工具,类似python中的函数一样,可以将这个值传入到函数中,然后做一些操作.  在模板中,过滤器相当于是函数,把当前变量传入到过滤器中,然后过滤器根据自己的功能,再返回响应的值,之后再将结果渲染到页面中

2  .  语法    `{variable |  过滤器名字}`  ,使用管道符 " | ",进行组合.

jinja2中常用过滤器

如果传入变量代码块的值为 None,则传入默认值:

{{ post.date | default("2016-11-22") }}


若希望传入变量代码块的值为 False 时,使用默认值,可以将 True 传入 default 过滤器的第二个参数 。

{{ ‘‘ | default(String, True)}}

float

将传入变量代码块中的值转换为浮点数,类似于 Python 的 float()

{{ 75 | float }}

int

类似于 Python 的 int()

{{ 75.5 | int }}

lenght

类似于 Python 中的 len()

The Count: {{ post.tags | lenght }}

title

将传入变量代码块的 String 的首字母转换成大写,成为一个合格的 Title。

{{ "post title" | title }}

round

类似于 Python 的 round() 定义浮点数的精度。

{{ 3.14159 | round(1) }}
{{ 4.7 | rount(1, "common")}}
  • common 参数:四舍五入
  • floor 参数:截取整数部分
  • ceil 参数:向上取整

join

将传入变量代码块的列表变量中的元素作为字符串连接起来,类似于 Python 的 join()

{{ [JmilkFan, fanguiju ] | join(,)}}

tojson

过滤器 tojoin 实际上是调用了 Python 的 json.dumps 函数来序列化对象,一样的需要确保传入变量代码块的是一个可以被序列化的对象 Dict。

{{ {"key": "value" | tojson }}}

如果我们采用将 SQLAlchemy models 的查询对象直接传入模板文件中进行渲染的方式来生成整个 HTML 页面时,我们就会常常使用到 tojson 过滤器,而且我们还需要将序列化后的结果进行 safe 处理,才能保证其安全性。

{{ posts | tojson | safe }}

truncate

用于截取指定长度的 String 对象,并在截取后的子字符串后添加省略号。

{{ "a long stringggggggggggggggggg " | truncate(5) }}

escape


如果传入变量代码块的是 HTML 字符串,则将该字符串中的 &、<、>、’、” 作为 HTML 的转义序列打印。

{{ "<h1>Title<\h1>" | escape }}

safe

safe 过滤器含有 escape 的功能,将传入到变量代码块中的 HTML 字符串中的特殊符号进行 HTML 转义,这是必要的安全手段。
假如我们需要直接将 HTML 作为变量传入到变量代码块中,而且这个传入的接口是公开的话,我们就需要防止用户提交恶意的 HTML 代码。如果 Jinja 没有 HTML 转义功能的话,那么我们访问这个变量代码块的时候就会运行这些被提交的恶意 HTML 代码了。EG. 一个用户在回复框输入了含有 Script 标签的 HTML 代码,那么所有打开该页面的浏览器都会执行这些 Script。

但有一个问题就是:在有些情况下我们不应该对 HTML 进行转义且需要保证安全性的,对于这个问题,escape 过滤器是无法解决的。所以 Jinja 提供了 safe 过滤器。

{{ "<h1>Post Title"</h1> | safe }}

自定义过滤器

 

from flask import Flask,url_for,abort,Response,render_template
# from flask_script import Manage

app = Flask(__name__)

#自定义过滤器
def glq_one(str1):
    return str1[0:3]

#注册过滤器的第一种方法  第一个参数是函数的名字,第二个参数是过滤器的名字
# app.add_template_filter(glq,"str")

#第二种方法
#自定义过滤器
@app.add_template_filter("li3")   #过滤器的名字
def glq_two(str1):
    return str1[0:3]


@app.route("/index")
def index():
    y="dfdbbgagagpaogjapogj"

    return render_template("str1.html",u = y)


if __name__ == __main__:
    app.run()

参考博客:https://blog.csdn.net/jmilk/article/details/53292248/

flask过滤器

标签:字符   mod   情况下   特殊符号   需要   首字母   整数   turn   div   

原文地址:https://www.cnblogs.com/lxx7/p/10360430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!