jinja2 yi

Jinja2用法总结

一:渲染模版

要渲染一个模板,通过render_template方法即可。

渲染模版时有两种传递参数的方式:用 var='value' 传递一个参数;使用字典组织多个参数,并且加两个*号转换成关键字参数传入。

模版讲解:

二:模板概要

{{ ... }}:装载一个变量,模板渲染的时候,会使用传进来的同名参数这个变量代表的值替换掉。

{% ... %}:装载一个控制语句。

{# ... #}:装载一个注释,模板渲染的时候会忽视这中间的值。

三:变量

1)在模板中添加变量,可以使用(set)语句。

{% set name='xx' %}

之后就可以在页面文件中使用name这个变量了。在解释性语言中,变量的类型时运行时确定的,因此,这里的变量可以赋任何类型的值。

2)局部变量

可以使用with语句来创建一个内部的作用域,将set语句放在其中,这样创建的变量只在with代码块中才有效。

{% with foo = 42 %}

{{ foo }}

{% endwith %}

这样,foo变量就只能在with标签间可以使用。

控制语句

控制语句都是放在{% ... %}中,并且有一个语句{% endxxx %}来进行结束。

1:if语句

{%ifkenny.sick %}

Kennyissick.

{%elifkenny.dead %}

You killed Kenny! You bastard!!!

{%else%}

Kenny looks okay---so far

{% endif %}

for循环

1)普通用法

{% for user in users %}

  • {{ user.username|e }}
  • {% endfor %}

    2)遍历字典

    {% for key, value inmy_dict.iteritems()%}{{ key|e }}{{ value|e }}{% endfor %}

    4)Jinja2中for循环内置常量

    loop.index当前迭代的索引(从1开始)

    loop.index0当前迭代的索引(从0开始)

    loop.first是否是第一次迭代,返回True\/False

    loop.last是否是最后一次迭代,返回True\/False

    loop.length序列的长度

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

    五:运算符

    +号运算符:可以完成数字相加,字符串相加,列表相加。但是并不推荐使用+运算符来操作字符串,字符串相加应该使用~运算符。

    -号运算符:只能针对两个数字相减。

    /号运算符:对两个数进行相除。

    %号运算符:取余运算。

    *号运算符:乘号运算符,并且可以对字符进行相乘。

    **号运算符:次幂运算符,比如2**3=8。

    in操作符:跟python中的in一样使用,比如{{1 in [1,2,3]}}返回true。

    ~号运算符:拼接多个字符串,比如{{"Hello" ~ "World"}}将返回HelloWorld。

    六:Jiaja2模版最重要的部分——宏

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

    比如:定义一个input标签宏

    1)页面文件中导入宏——import

    在开发中,会将一些常用的宏单独放在一个文件中,在需要使用的时候,再从这个文件中进行导入。

    import语句的用法跟python中的import类似,可以直接import...as...,也可以from...import...或者from...import...as...。

    导入模板并不会把当前上下文中的变量添加到被导入的模板中,我们可以在导入的时候使用with context 把上下文传进去:

    {% from '_helpers.html' import my_macro with context %}

    宏文件中引用其它宏——include

    include语句可以把一个模板引入到另外一个模板中,类似于把一个模板的代码copy到另外一个模板的指定位置。

    {% include 'header.html' %}

    Body

    {% include 'footer.html' %}

    你可能感兴趣的:(jinja2 yi)