java 单机接口限流处理方案
402
2022-08-28
Flask模板与自定义过滤器
render_template 方法渲染模板
from flask import Flask , render_template
第一个参数是要渲染到当前页面的模板文件,默认是从当前程序目录下的templates文件夹中去获取
后面的参数,把需要的模板变量以平铺的方式需要几个传几个就行。
模板中以双大括号的形式 包含要传入的变量名,{{ name }}
template.py
from flask import Flask , render_templateapp = Flask(__name__)@app.route("/index")def index(): return render_template("index.html",name="baicai",age="20")if __name__ == '__main__': app.run(debug=True)
index.html
name = {{ name }}
age = {{ age }}
同样,也能将需要传的参数和值都写到字典里传入
加星星,意思是解包这个字典
**
data = { "name":"baicai", "age":20}return render_template("index.html",**data)
在字典中解包出来字典,传过去前端是以字典的形式返回,列表也是
@app.route("/index")def index(): data = { "name":"baicai", "age":20, "my_dict":{"city":"shandong"}, "my_list":[1,2,3,4,5], "my_int":0 } return render_template("index.html",**data)
如果想获取字典中city对应的值,只需在模板中写入
my_dict = {{ my_dict.city }}
或者
my_dict = {{ my_dict["city"] }}
列表也可以嵌套其他变量的值
my_dict = {{ my_dict.city }}
my_list = {{ my_list[my_int] }}
最终返回到页面的结果
模板变量
使用起来特别灵活,可以进行加减法操作
如果双花括号里的变量名存在传值,就把值返回到页面,不存在就当字符串返回到前端中,前提是要有双引号包裹着
my_list[0] + my_list[1] = {{ my_list[0] + my_list[1] }}
{{ "hello dj" }}
模板过滤器
对变量传来的值进行过滤等操作
safe 关闭安全模式,禁用转义,Flask中转义默认是开启的
{{ '
capitalize 将变量值的首字母转成大写,其余字母转小写lower 所有字符转小写upper 所有字符转大写title 把值中每个单词的首字母转为大写trim 首位空格去除reverse 反转字符串striptags 渲染前把值中所有html标签删除
可以搭配多结合使用
例如:
{{ " hello python" } | trim | safe | upper}
列表过滤器
first 取第一个参数
last 取最后一个参数
length 获取列表长度
sum 列表求和
sort 列表排序
自定义过滤器
因为一些需求,flask内置的过滤器不能达到我们的需求,这时候就需要自写过滤器
两种方式
1、自写函数添加到应用过滤器中
创建过滤器并写要过滤的操作,其实就是个函数方法
添加过滤器到flask应用中,并给过滤器起名
应用到模板文件中
定义的函数要带形参,表示接收变量的值,内置就接收了
通过
app.add_template_filter(自定义方法 , "过滤器名称")
添加函数方法到flask过滤器中
例如:将列表中的值每隔两个获取到
from flask import Flask , render_templateapp = Flask(__name__)@app.route("/index")def index(): data = { "name":"baicai", "age":20, "my_dict":{"city":"shandong"}, "my_list":[1,2,3,4,5], "my_int":0 } return render_template("index.html",**data)# 1、自定义过滤器def list_step_2(li): return li[::2]# 2、加入到当前应用中app.add_template_filter(list_step_2,'li2')if __name__ == '__main__': app.run(debug=True)
2、使用装饰器
参数里是过滤器名称
@app.temolate_filter("li3")
# 使用装饰器自定义过滤器@app.template_filter("li3")def list_step_3(li): return li[::3]
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~