原创

Flask(7) - jinja2模板使用(过滤器)

一、过滤器基本使用

  • 在模板中要对一些变量进行处理,那就需要类似python中的函数一样,可以将值传到函数中,然后做一些处理。
# app.py

from flask import Flask, render_template
app = Flask(__name__)
@app.route("/index/")
def index():
    # 传参
    res = {
        "name": -100
    }
    return render_template("index.html", **res)

if __name__ == '__main__':
    app.run(debug=True)
<!-- index.html -->

<!DOCTYPE html>
<html lang="zh-en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>index</title>
</head>
<body>
<h1>绝对值</h1>
<!-- 过滤器通过“|”管道符调用 -->
<!-- 过滤器语法:{
  {变量值|过滤器的名字}} -->
<p>{
  { name }}绝对值:{
  { name|abs }}</p>
</body>
</html>

二、常用过滤器

  • default过滤器使用
#app.py

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/index/")
def index():
    res = {
        # "name": "asdasd"
    }
    return render_template("index.html", **res)

if __name__ == '__main__':
    app.run(debug=True)
<!-- index.html -->

<!DOCTYPE html>
<html lang="zh-en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>index</title>
</head>
<body>
<h1>default</h1>
<!-- 如果name不存在,默认显示为空,通过default增加一个显示默认值 -->

<p>{
  { name|default("asd") }}</p>

</body>
</html>
  • 其他常用过滤器
abs(value) : 返回一个绝对值。示例:-100|abs

default(value, defautl_value, boolean=False) : 如果当前的变量没有赋值,则使用default中的参数代替;如果变量值等于None时,需要boolean=True。示例: name|default("hahaha")

escape(value):转义字符,将“< >”等字符转义成html中的符号。示例:name|escape

first(value):返回一个序列的第一个元素。示例:names|first

format(value,arags,*kwargs):格式化字符串。示例:{
  { "%s" - "%s"|format('Hello',"world") }}输出:Hello-world

last(value):返回序列的最后一个元素。示例:name|last

length(value):返回序列、字典的、字符的长度。示例:name|length

join(value,a="b"):将序列用a这个参数值拼接成字符串

safe(value):如果开启了全局转义,可以通过safe过滤器将变量关掉转义。示例:name|safe

int(value):将值转换成int类型

float(value):将值转换成float类型

lower(value):将值转换成小写

upper(value):将值转陈成大写

replace(value,old,new):将old替换成new字符串

truncate(value,length=100,killwords=False):截取length长度的字符串

striptags(value):删除所有html标签,如果有多个空格,则替换成一个空格

trim(value):截取字符串前面和后面的空白字符

strint(value):将变量转为字符串

wordcount(c):计算字符串中出现c单词的个数

三、自定义过滤器

# app.py

# 自动启动
app.config["TEMPLATES_AUTO_RELOAD"]

@app.route('/')
def hello_world():
    res = {
        "name": "哈哈 呵呵 嘻嘻",
    }
    return render_template("index.html", **res)

# @app.template_filter("delstrs")中的delstrs是过滤器的名字
@app.template_filter("delstrs")
def delstrs(value):
    # 删除“哈哈”字符串
    value = value.replace("哈哈","")
    return value
<!--index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<!--使用过滤器过滤变量name-->
<p>{
  { name|delstrs }}</p>

</body>
</html>

 

 

 

 

 

正文到此结束
评论

登录后才能发表评论 登录/注册

0评论
  • 还没有评论,快来抢沙发吧!