Flask之Jinja2模板

Jinjia2模板可以保存在任何基于文本的文件中,比如XML,HTML,CSV等,所有模板文件本身可以接受任何文件后缀。

Jinjia2模板由普通内容,变量,表达式,标签和注释组成

  • 普通内容:

为没有特殊含义的内容,渲染模板时不对其进行解释

  • 变量:

在Jinjia2 中可以定义变量,在渲染模板时变量会被替换为其他包含的值

  • 表达式:

可以针对变量进行算术或逻辑操作。

  • 标签

用于在渲染模板时进行逻辑操作

  • 注释

渲染模板时会将注释内容从生成的文件中删除

{{....}}

用于输出变量或表达式

{{ varName }}

{%....%}

用于进行逻辑控制

{%for item in navigation %}
  • {{ item }}
  • {%endfor%}

    {#....#}

    用于注释

    {# a comment #}
    

    过滤器

    过滤器通过管道符号“|”与变量连接,并且可以通过圆括号传递参数。

    过滤器 说明
    abs(number) 将被转换的变量转换为绝对值形成
    attr(object,name) 获得被转换的变量的指定属性 account attr('name')与account["name"]同效果
    capitalize(s) 将字符串的第一个字符转换为大写,之后的小写
    center(value,width=80) 接受一个字符串,将其置于80的长度中并居中,不足的字符使用空格填充
    default(value,default_name="u",boolean=False) 返回value指定的变量值,比如value是未定义的,则返回default_value指定的值,如果在value被指定为False时,也想用default_value替换,需要设置为Ture
    dictsort(value,case_sensitive=False,by='key') value为要遍历的字典,case_sensitive指示是否立即加载,设置为False表示延迟加载,by表示以什么方式排序,默认以key键排序,也可以设置by=‘key’来以值排序
    escape(string) 把字符串的HTML特殊字符,转换为HTML表达方式
    filesizeformat(value,binary=False) 接受一个数值,返回让人容易阅读的形式,比如10KB,1.3MB,如果打开binary,显示以Mebi,Gibi形式展示
    first(sequence) 返回序列的第一个元素
    float(value,default=0.0) 将接受的value转换为float类型,如果转换失败则返回指定的default值
    forcesscape(value) 强制进行HTML转码,不检查要转码的字符串是否被标记为安全
    format(value,*attribute) 字符串格式化转化
    groupby(value,attribute) 按照指定的共有属性将集合进行分组,返回元祖组成的列表
    indent(string,width=4,indentfirst=False) 将接受的string每行缩进width指定的字符数,indentfirst用来指定首行是否缩进
    int(value,default=0) 将接受的value转换成int型,如果转换失败了,则返回default指定的值
    join(value,d='u') 接受一个序列类型的对象,返回用d指定的字符将所有序列元素连接在一起的字符串结果
    last(seq) 返回指定序列的最后一个元素
    length(obj) 返回序列或者字典的项数
    lower(string) 将接受的字符串转换为小写形式
    pprint(value,verbose=False) 漂亮地打印一个变量的值,多用于调试,verbose是否显示冗长的信息
    random(seq) 接受一个序列对象,随机返回其中一个元素
    replace(string old,new, count=None) 接受一个字符串,将其中old表示的子串替换成new指定的子串,count是指定替换次数,不指定则替换一次
    reverse(value) 接受一个可迭代的对象,返回逆序的迭代器
    round(value,precision = 0,method='common') 舍去运算,接受一个值,percision表示精度,common,ceil,floor分别为四舍五入,进位,舍去
    safe(value) 标记传入的value值是安全的,使用escape转码时不会进行二次转码
    slice(value,slices,fill_width=None) 切片,接受一个可迭代的对象,不足slices个则使用fill_width指定的对象进行填充
    sort(value,reverse=False,case_sensitive=False,attribute=None) 对可迭代的变量进行排序。默认情况下以升序,大小写不敏感的方式进行,如果变量本身包含属性,通过attribute参数按变量中属性排序
    string(object) 变成字符串类型
    striptags(value) 去除SGML,XML标签
    sum(iterable,attribute=None,start=0) 对可迭代变量进行求和,如果包含属性,可以设置attribute参数
    title(s) 将字符串转换为以标题形式显示
    trim(value) 去除字符串的前导和续尾空格
    truncate(s,length=255,killwords=False,end='...') 将字符串转换为简略形式,length截取长度,killWord设置是否保持单词完整性,end为简略写法后缀
    upper(s) 将字符串转换为大写
    wordcount(s) 计算字符串个数
    wordwrap(s,width=79,break_long_words=True,wrapstring=None) 将字符串按参数中的值进行分行处理

    流程控制

    1. 测试

    测试时根据变量或表达式的值生成布尔结果的一种函数工具。要测试一个变量或表达式,则需要在变量后面加上一个is及测试 的名称。

    {% if loop.index is divisibleby(3) %}
    {{name is defined}}
    
    函数名 说明
    allable(object) 测试一个对象是否是可调用对象
    defined(value) 测试传入的对象是否已经被定义了
    divisibleby(value,num) 测试传入的数值是否可以被num整除
    escaped(value) 检查传入的对象是否被转码了
    even(value) 如果传入的数值是偶数,则返回True,否则返回False
    iterable(value) 检查对象是否是可迭代的
    lower(value) 检查传入的字符串是否都是小写
    none(value) 检查对象是否是空对象None
    number(value) 检查传入的数字是否是一个数字
    odd(value) 检查传入的数字是否为奇数
    sameas(value,other) 检查传入的对象和other指定的对象是否在内存相同的一块地址(同对象)
    sequence(value) 检查对象是否是序列,序列同样是可迭代对象
    string(value) 检查对象是否是string
    undefined(value) 检查一个对象是否未定义
    upper(value) 检查一个字符串是否全部大写

    判断语句

    {%if users%}
    ...
        {%elif users.name%}
        ....
        {%else %}
        ...
    {%endif%}
    

    循环

    {%for user in users%}
        ...
    {%endfor%}
    

    for循环块特殊变量

    变量 描述
    loop.index 当前循环从1开始
    loop.index() 当前循环迭代次数从0开始
    loop.revindex 到循环结束需要迭代的次数,从1开始
    loop.revindex() 到循环结束需要迭代的次数,从0开始
    loop.first 如果是第一次迭代,则为True
    loop.last 如果是最后一次迭代,则为True
    loop.length 序列中的项目数量
    loop.cycle 在一串序列间取值的辅助函数

    模板继承

    基础模板

    base.html

    
        
        base.html
    
        
            {%block conent %}
            {% endblock %}
        
    
    

    子类模板

    sub.html

    {% extends "base.html"%}
    {%block content%}
        

    hhe

    {%endblock%}

    你可能感兴趣的:(Flask之Jinja2模板)