• Flask框架中Jinja2模板过滤器


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

    常见的过滤器如下所示:

    • abs(value):返回一个数值的绝对值。 例如:-1|abs。
    • default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。name|default('张三')——如果name不存在,则会使用’张三‘来替代。boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换。
    • escape(value)或e:转义字符,会将<、>等符号转义成HTML中的符号。例如:content|escape或content|e。
    • first(value):返回一个序列的第一个元素。names|first。
    • format(value,*arags,**kwargs):格式化字符串。
    • last(value):返回一个序列的最后一个元素。示例:names|last。
    • length(value):返回一个序列或者字典的长度。示例:names|length。
    • join(value,d=u''):将一个序列用d这个参数的值拼接成字符串。
    • safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。
    • int(value):将值转换为int类型。
    • float(value):将值转换为float类型。
    • lower(value):将字符串转换为小写。
    • upper(value):将字符串转换为小写。
    • replace(value,old,new): 替换将old替换为new的字符串。
    • truncate(value,length=255,killwords=False):截取length长度的字符串。
    • striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。
    • trim:截取字符串前面和后面的空白字符。
    • string(value):将变量转换成字符串。
    • wordcount(s):计算一个长字符串中单词的个数。

    示例代码:

    main.py

    1. from flask import Flask, render_template
    2. app = Flask(__name__)
    3. @app.route('/')
    4. def index():
    5. content = {
    6. "names": {"name": 'dgw'},
    7. "age": 25,
    8. "sex": '男'
    9. }
    10. name_list = ['张三', '李四', '王五', '赵六', '孙七']
    11. num = -5
    12. data = {
    13. "content": content,
    14. "name_list": name_list,
    15. "num": num
    16. }
    17. return render_template('index.html', **data)
    18. if __name__ == '__main__':
    19. app.run()

    index.html

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. 欢迎来到首页!
    9. <div>
    10. names:{{ content.names.name }} <br>
    11. names:{{ content.names['name'] }} <br>
    12. sex:{{ content.sex }} <br>
    13. age:{{ content.age }} <br>
    14. {# personal info #}
    15. div>
    16. <div>
    17. <ul>
    18. {% for name in content.name_list %}
    19. <li>{{ name }}li>
    20. {% endfor %}
    21. ul>
    22. div>
    23. <div>
    24. abs(value)--->:{{ num | abs }} <br>
    25. default(value)-->:{{ nums | default('666') }} <br>
    26. name_list-->:{{ name_list }} <br>
    27. first(value)-->:{{ name_list | first }} <br>
    28. last(value)-->:{{ name_list | last }} <br>
    29. format(value,*args,**kwargs)-->{{ "%s - %s" | format(content.names.name, content.names.name) }} <br>
    30. length(vale)--->:{{ content.names.name | length }}
    31. float(value)-->:{{ num | float }}
    32. div>
    33. body>
    34. html>

    运行结果:

     查看Jinja2中更多内置的过滤器,详见官网:Template Designer Documentation — Jinja Documentation (3.0.x)

  • 相关阅读:
    Citespace、vosviewer、R语言的文献计量学 、SCI
    2022年8月叙利亚再次因国考全国断网
    面试官:同学,冒泡太简单了,要不手写一个【快速排序】吧...
    202305青少年软件编程(Python)等级考试试卷(四级)
    Optuna:带仪表盘的可视化的超参数优化
    Python 解释器的安装过程
    【Opencv】OpenCV使用CMake和MinGW的编译安装出错解决
    透视maven打包编译正常,intellj idea编译失败问题的本质
    【轨迹优化篇】(6)局部运动规划方向
    npm设置淘宝镜像库为默认库
  • 原文地址:https://blog.csdn.net/weixin_44799217/article/details/126324345