模板的过滤器使用

1、基本使用

from flask import Flask,render_template


app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index_filter.html',position=-9)


if __name__ == '__main__':
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器的基本使用</title>
</head>
<body>
    <!--绝对值的过滤器使用-->
    <p>位置的绝对值:{{ position |abs }}</p>
</body>
</html>

2、default过滤器的详解

from flask import Flask,render_template


app = Flask(__name__)


@app.route('/')
def index():
    return render_template('index_filter.html',position=-9)


#default默认过滤器的使用
@app.route('/user/')
def user():
    context = {
        'signature':"我就是我,不一样的烟火",
        #如果introduce为None,使用过滤器default还是None,
        #python 中 变量显示为false的情况,0,空,None
        'introduce' : None
    }
    return render_template('index_default.html',**context)

if __name__ == '__main__':
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>default使用</title>
</head>
<body>
    <h1>个性签名:signature</h1>
    <p style="color: rosybrown">{{ signature }}</p>
    <!--default过滤器的使用-->
    <p style="color: gray">{{ introduce|default('该用户很懒,没有留下任何说明') }}</p>
    <!--default过滤器,如果introduce为None也会显示,如果不想它显示,后面加个参数
    boolean-->
    <p style="color: red">{{ introduce|default('该用户很懒,没有留下任何说明',boolean=true) }}</p>
    <!--default过滤器,or的使用-->
    <p>{{ introduce or '使用默认值' }}</p>
</body>
</html>

3、常用的模板标签

 

from flask import Flask,render_template


app = Flask(__name__)

app.debug = True


@app.route('/')
def index():
    context = {
        #这样传过去,没有渲染成js代码
        'html':'<script>alert("你好!")</script>',
        'lists':["zhili","xiao","da"],
        'age': "18",
        "article":"hello python",
        'aaaaaaaa': "hello python",
    }
    return render_template('common_filter.html',**context)


if __name__ == '__main__':
    app.run()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见的过滤器</title>
</head>
<body>
    <!--普通渲染的html成字符串,不是超文本标记语言-->
    <!--<script>alert("你好!")</script>,jinja2模板会自动把<,>转义成gt,lt的形式-->
    <p>{{ html }}</p>
    <!--第一种关闭转义的方式-->
{#    escape就是逃离的意思#}
    {% autoescape off %}
        {{ html|escape }} <!--加个escape过滤器关闭转义-->
    {% endautoescape %}
    <!--第一中方式结束-->
    <!--第二种自动关闭转义的方式-->
    {{ html|safe }}
    <!--end-->
    <!--返回序列的第一值-->
    <h1>{{ lists|first }}</h1>
    <h2>{{ lists[0] }}</h2><!--可以像python中用列表索引取值-->
    <!--返回序列的最后一个元素-->
    <h3>{{ lists|last }}</h3>
    <h4>{{ lists[3] }}</h4>
    <!--模板格式化过滤器format的用法-->
    <p>{{ "我的姓名:%s"|format("小吴") }}</p>
    <!--模板返回元祖、列表、字典、集合、的长度length的用法-->
    <p>{{ lists|length }}</p>
    <!--模板过滤器join的用法-->
    <p>{{ '+'.join(lists) }}</p> <!--模板的join用法跟python一样-->
    <!--模板的if else语句-->
    {% if age|int == 18 %}<!---age|string  == "18" -->
        <p>年龄是18</p>
    {% else %}
        <p>不是18</p>
    {% endif %}
    <!--模板replace的用法跟python yiyang -->
    <p>{{ article|replace("hello","aaaa") }}</p>
    <!--模板truncate,指定显示多少字符-->
    <p>{{ article|truncate(length=5) }}</p>
    <!--模板truncate,leeway默认长度等于5,如果length+leeway大于等于要截取的字符串长度
    返回原字符串-->
  #看下truncate源码
  

<p>{{ article|truncate(length=7,leeway=0) }}</p> <!--striptags:删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格--> <p>{{ html|striptags }}</p> </body> </html>
原文地址:https://www.cnblogs.com/wuheng-123/p/9672327.html