Flask Web框架(二)Jinja2模板过滤器

Jinja2模板过滤器

1.模板的简介

模板是一个web开发必备的模块。因为我们在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要渲染一个有富文本标签的页面。这时候我们就需要使用模板了。在Flask中,配套的模板是Jinja2模板过滤器,Jinja2模板过滤器的作者也是Flask的作者。这个模板非常的强大,并且执行效率高。

Flask渲染jinja2模板

  • 要渲染一个模板需要通过render_template方法,模板文件放在当前文件夹下的templates文件夹下
from flask import Flask,render_template
app = Flask(__name__)
# 创建视图函数
@app.route('/hello/')
def hello_world():
	# 渲染模板
    return render_template('hello.html')
    
app.run(debug=True)

当访问 /hello/ 时hello_world()函数会找到templates文件夹下的hello.html模板文件。如果想更改模板文件地址,应该在创建app的时候,给Flask传递一个关键字参数template_folder,指定具体的路径如:

app = Flask(__name__,template_folder="指定的路径")

模板传参

第一种方式是比较直接的。但是当你的模板中要传递的参数过多的时候,把所有参数放在一个函数中会导致有些冗长,因此我们使用字典进行包装,并且加两个*号进行拆包,来转换成关键字参数。

@app.route('/about/')
def about():
	# 当所传参数只有一个时可直接传递
    # return render_template('about.html',user='python')
    # 以字典形式传入
    content = {
	"name":"tom",
	"html": "<script>alert('hello world');</script>""look": ["python", "Java", "JS"],
	"cate":"hello world"
	}
	# 这里相应的需要一个拆包
    return render_template('about.html',**content)
  • 对应部分html内容,涉及了部分jinja2过滤器的语法
	<!--   获取a的属性-->
	<p> {{ name }}</p>
    <!--    获取第一个元素-->
    <p>{{ look|first}}</p>
    <!--    获取最后一个元素-->
    <p>{{ look|last}}</p>
    <p>{{ look|length}}</p>
    <!--     第一个元素的长度   -->
    <p>{{ look|first|length}}</p>

2.Jinja2模版过滤器

过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。Jinja2中内置了许多过滤器,在这里可以看到所有的过滤器

  • abs(value):返回一个数值的绝对值。
  • default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。name|default(‘tom’)——如果name不存在,则会使用tom来替代。boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换。
  • escape(value)或e:转义字符,会将<、>等符号转义成HTML中的符号。例如:content|escape或content|e。
  • first(value):返回一个序列的第一个元素。look|first。
  • format(value,*arags,**kwargs):格式化字符串。例如以下代码:
    <p>{{ "%s" - "%s"|format('Hello',"world!!!") }}</p> # 将输出:Hello - world!!!
  • last(value):返回一个序列的最后一个元素。示例:look|last。
  • length(value):返回一个序列或者字典的长度。示例:look|length。
  • join(value,d=u’’):将一个序列用d这个参数的值拼接成字符串。
  • safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。
    • 关闭转义的两种方式:
        <!--    浏览器会默认对字符进行转义,这里进行了转义的关闭 (有开就有关)-->
        		 {% autoescape off %}
    			 <p>{{ html }}</p>
       			 {% endautoescape %}
        <!--    关闭了对变量的转义-->
        <!--    <p>{{ html|safe }}</p>-->
    
  • int(value):将值转换为int类型。
  • float(value):将值转换为float类型。
  • string(value):将变量转换成字符串。
  • lower(value):将字符串转换为小写。
  • upper(value):将字符串转换为大写。
  • replace(value,old,new): 替换将old替换为new的字符串。
  • truncate(value,length=255,killwords=False):截取length长度的字符串。
 <!--     截取字段,参数必须大于3,因为截取之后会出现3个点,点也占位   -->
    <p>{{ cate|truncate(5)}}</p>
 <!-- 结果为: he... -->
  • striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。
  • trim:截取字符串前面和后面的空白字符。
  • wordcount(s):计算一个长字符串中单词的个数。(按照空格计算的)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值