flask学习笔记(七) --自定义过滤器

举报
王建峰 发表于 2021/11/19 04:21:22 2021/11/19
【摘要】 欢迎加入知了课堂,学习flask Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002 Python Flask框架——全栈开发: http://study.163.com/course/courseMain....

欢迎加入知了课堂,学习flask

Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006



之前有介绍过,在模版中,过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。本次目标是实现一个简单 的过滤器,举一反三,便于以后可以实现功能更强大的过滤器。在此之前,我们先要了解一下Jianja2的默认过滤器。



一、常用过滤器:

1. first(value):返回一个序列的第一个元素。names|first。

2. last(value):返回一个序列的最后一个元素。示例:names|last。

3. length(value):返回一个序列或者字典的长度。示例:names|length。

4. join(value,d=u''):将一个序列用d这个参数的值拼接成字符串。

5. safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。

6. int(value):将值转换为int类型。

7. float(value):将值转换为float类型。

8. lower(value):将字符串转换为小写。

9. upper(value):将字符串转换为小写。

10. replace(value,old,new): 替换将old替换为new的字符串。

11. truncate(value,length=255,killwords=False):截取length长度的字符串。

12. striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。

13. trim:截取字符串前面和后面的空白字符。

14. string(value):将变量转换成字符串。

15. wordcount(s):计算一个长字符串中单词的个数。

16.format(value,*arags,**kwargs):格式化字符串。例如以下代码:

{{ "%s" - "%s"|format('Hello?',"Foo!") }}

将输出:`Helloo? - Foo!`


二、自定义过滤器 my_cut

过滤器本质上就是一个函数。如果在模版中调用这个过滤器,那么就会将这个变量的值作为第一个参数传给过滤器这个函数,然后函数的返回值会作为这个过滤器的返回值。需要使用到一个装饰器:`@app.template_filter('cut')`,它的作用是将被修饰的函数修饰为模板的过滤器!


python文件:

@app.template_filter('my_cut')
def cut(value):
value = value.replace("hello",'')
return value

html文件:

<p>{{ article|my_cut }}</p>

这就定义好了一个过滤器 my_cut,如果变量中含有“hello”这个子串,将其删去



展示给浏览器的是 world,而不是hello world。



三、总结


欢迎加入知了课堂,学习flask

Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006


文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/80735302

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。