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过滤器的使用。
正好复习下咱们上篇文章讲的参数传递。实现下这种效果。
图片有点大,可以自行在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>
这里面还用到了一个过滤器,叫length
,comment|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
网友评论