Python学习
2021-04-30 本文已影响0人
逛逛_堆栈
python-flask框架学习(四)
flask 模板文件操作
1、控制操作
用 {%%} 定义的控制代码块,可以实现一些语言层次的功能,比如循环或者if语句。
if分支结构
{% if my_num >= 20%}
<h2>传递的{{my_num}}大于等于20</h2>
{% else %}
<h2>传递的{{my_num}}小于20</h2>
{% endif %}
循环结构
<ul>
{% for item in my_list %}
<li>{{item}}</li>
{% endfor %}
</ul>
2、过滤器
过滤器的本质就是函数。有时我们不仅需要输出变量的值,还需要对数据格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。
过滤器的使用方式为:变量名 | 过滤器。
{{variable | filter_name(*args)}}
注意:在 jinja2 中,过滤器是可以支持链式调用的,类似jquery表示设置也是支持链式编程。
2.1、常用过滤器
2.1.1、字符串过滤器
# upper:把值转成大写
<p>{{ 'hello' | upper }}</p> # HELLO
# lower:把值转成小写
<p>{{ 'HELLO' | lower }}</p> # hello
# reverse:字符串反转
<p>{{ 'hello' | reverse }}</p> # olleh
# title:把值中的每个单词的首字母都转成大写
<p>{{ 'helloworld' | title }}</p> # HelloWorld
# format:格式化输出
<p>{{ 'my name is %s , I am %d years old' | format('张三',18) }}</p>
# my name is 张三 , I am 18 years old
# truncate: 字符串截断
<p>{{ 'hello everyone' | truncate(9)}}</p>
2.1.2、列表过滤器
# first:取第一个元素
<p>{{ [1,2,3,4,5,6] | first }}</p> # 1
# last:取最后一个元素
<p>{{ [1,2,3,4,5,6] | last }}</p> # 6
# length:获取列表长度
<p>{{ [1,2,3,4,5,6] | length }}</p> # 6
# sum:列表求和
<p>{{ [1,2,3,4,5,6] | sum }}</p> # 21
# sort:列表排序
<p>{{ [6,2,3,1,5,4] | sort }}</p> # [1, 2, 3, 4, 5, 6]
2.2、自定义过滤器
再flask中,自定义过滤器有两种方式实现。
1、通过Flask应用对象的add_template_filter方法;
2、通过装饰器来实现自定义过滤器;
2.2.1、add_template_filter自定义过滤器
通过调用应用程序实例的 add_template_filter 方法实现自定义过滤器。该方法第一个参数是函数名,第二个参数是自定义的过滤器名称。
1、创建方法、比如说列表反转
def list_reverse(li):
temp = list(li)
temp.reverse()
return temp
2、加入add_template_filter
app.add_template_filter(list_reverse,'list_reverse')
3、测试使用
自定义列表反转
<p>{{ [1,2,3,4,5] | list_reverse }}</p> # [5,4,3,2,1]
2.2.2、装饰器实现自定义过滤器
用装饰器来实现自定义过滤器。装饰器传入的参数是自定义的过滤器名称。
1、加入装饰器
@app.template_filter('list_reverse')
def list_reverse(li):
temp = list(li)
temp.reverse()
return temp
2、测试使用
自定义列表反转
<p>{{ [1,2,3,4,5] | list_reverse }}</p> # [5,4,3,2,1]