Flask交流

四、过滤器

2018-08-27  本文已影响41人  十柒年

1.过滤器介绍

过滤器可以处理一些变量,把原始的变量经过处理后在展示出来。作用的对象是变量。过滤器也就是一个函数,不过是放到模板中用的。
咱们看一个示例。

from flask import Flask, render_template

app = Flask(__name__)

'''
# 不使用过滤器直接传递头像
@app.route('/')  
def index():
    return render_template('index.html',avatar='https://cdn2.jianshu.io/assets/default_avatar/5-33d2da32c552b8be9a0548c7a4576607.jpg')
'''

# 使用过滤器,不传递头像路径的时候,显示默认值
@app.route('/')
def index():
    comments=[
        {
            'user': '张三',
            'content': 'xxxxx'
        },
        {
            'user': '李四',
            'content': 'aaaa'
        }
    ]
    return render_template('index.html',comments=comments)


if __name__ == '__main__':
    app.run(debug=True)

这里面写了两个一个的index函数,第一个注释掉的函数就是模板里加了一个参数avatar。然后在页面里用img标签来展示这个图片。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="{{ avatar }}"
     alt="">
</body>
</html>

结果就是在页面里直接显示一张图片。类似这种效果。


image.png

然后该咱们的过滤器登场了,在一些博客论坛中大家应该能发现这样一种现象,在列表里,有些用户使没有头像的,对于那些没有头像的用户,系统给他们加了一个默认头像,这个是在咱们这一篇文章中是怎么做的呢。看代码

# 不使用过滤器直接传递头像
@app.route('/')  
def index():
    return render_template('index.html')

现在咱们把这个方法后面的avatar参数去掉.然后在HTML里这样写。

<img src="{{ avatar | default('https://upload.jianshu.io/users/upload_avatars/6375263/99730b8f-ee16-4b18-9b05-8c945d0d2a5b.jpg') }}"
     alt="">

这里在avatar后面加了个default并且给default加了个参数,这样就表示如果avatar没值的时候,就是现实default里面的默认值。
这个就是default过滤器的使用。
正好复习下咱们上篇文章讲的参数传递。实现下这种效果。

image.png
图片有点大,可以自行在img里加一些样式,会html的同学应该会的。接下来看代码。
from flask import Flask, render_template

app = Flask(__name__)

'''
# 不使用过滤器直接传递头像
@app.route('/')  
def index():
    return render_template('index.html',avatar='https://cdn2.jianshu.io/assets/default_avatar/5-33d2da32c552b8be9a0548c7a4576607.jpg')
'''

# 使用过滤器,不传递头像路径的时候,显示默认值
@app.route('/')
def index():
    comments=[
        {
            'user': '张三',
            'content': 'xxxxx'
        },
        {
            'user': '李四',
            'content': 'aaaa'
        }
    ]
    return render_template('index.html',comments=comments)


if __name__ == '__main__':
    app.run(debug=True)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="{{ avatar | default('https://upload.jianshu.io/users/upload_avatars/6375263/99730b8f-ee16-4b18-9b05-8c945d0d2a5b.jpg') }}"
     alt="">
<hr>
<p>评论数:({{ comments|length }})</p>
<ul>
    {% for comments in comments %}
        <li>
            <a href="#">{{ comments.user }}</a>
            <p>{{ comments.content }}</p>
        </li>
    {% endfor %}
</ul>
</body>
</html>

这里面还用到了一个过滤器,叫lengthcomment|length就是返回comment列表里条数。其实在模板中的过滤器还有很多,在给大家简单写几个,abs、escape、first、format、last、length、join、safe、int、float、lower、upper、replace、truncate、striptags、trim、string、wordcount。
完整代码在这。链接:https://pan.baidu.com/s/1NgRhPJTsOAvsfZgiP0jedg 密码:zwwa。
Study hard and make progress every day.

更多学习资料请关注"爱游戏爱编程"。


爱游戏爱编程.jpg
上一篇 下一篇

猜你喜欢

热点阅读