zoukankan      html  css  js  c++  java
  • 最近在学习Flask框架,那么就说下jinja2吧~~~

    jinja是组成Flask的模板引擎,先写一个demo吧

    {% block body %}
      <ul>
      {% for user in users %}
        <li><a href="{{ user.url }}">{{ user.username }}</a></li>
      {% endfor %}
      </ul>
    {% endblock %}

    jinja的速度和Mako差不多,但比Genshi以及Django的模板引擎快10~20倍。

    1.在jinja2中for循环内置常量
    loop.index 当前迭代的索引(从1开始)
    loop.index0 当前迭代的索引(从0开始)
    loop.first 是否是第一次迭代,返回True/False
    loop.last 是否是最后一次迭代,返回True/False
    loop.length 序列的长度

    注意:不可以使用continue和break表达死来控制循环的执行。

    2.运算符 

    • +号运算符:可以完成数字相加,字符串相加,列表相加。但是并不推荐使用+运算符来操作字符串,字符串相加应该使用~运算符。
    • -号运算符:只能针对两个数字相减。
    • /号运算符:对两个数进行相除。
    • %号运算符:取余运算。
    • *号运算符:乘号运算符,并且可以对字符进行相乘。
    • **号运算符:次幂运算符,比如2**3=8。
    • in操作符:跟python中的in一样使用,比如{{1 in [1,2,3]}}返回true
    • ~号运算符:拼接多个字符串,比如{{"Hello" ~ "World"}}将返回HelloWorld

    Jinja2模块最重要的部分----宏

          宏相当于一个搭建好的页面一部分,可以被引入,可以往宏传递参数。可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量,在使用宏时传递参数,从而将宏渲染成为页面的一部分。

    比如:定义一个input标签宏:

    {% macro input(name, value='', type='text') %}
    <input type="{{ type }}" name="{{ name }}" value="{{
    value|e }}">
    {% endmacro %}

    在其它地方使用这个宏快速创建出符合要求的input标签:
    <p>{{ input('username') }}</p>
    <p>{{ input('password', type='password') }}</p>


    还有模板的继承以及过滤器等等~~
  • 相关阅读:
    前端到后台ThinkPHP开发整站(4)
    前端到后台ThinkPHP开发整站(2)
    字典树模版
    KMP模版
    EXKMP模版
    Manacher模版
    AC自动机练习题1:地图匹配
    AC自动机模版
    spring.net之aop加单例模式编写无try catch程序
    父类与子类之间赋值转换
  • 原文地址:https://www.cnblogs.com/Adalia-Ting/p/8600820.html
Copyright © 2011-2022 走看看