Jinja2基本操做


变量:  html

  JinJia2能识别许许多多python类型中的变量,例如python

<p> 获取字典中的值: {{ Dict['Key'] }} </p>
<p> 获取列表中的值: {{ List[2] }} </p>
<p> 获取对象方法: {{ obj.Method() }} </p>

过滤器:api

  

过滤器名称   说明 
 safe  渲染时不使用转义 
 capitalize 将值的首字母转换成大写的形式,其余的字母转换为小写 
 lower 把值转换成为小写 
 upper  把值转换成大写 
 title 把值中每一个单词的首字母都转换成大写的形式 
 trim 把值的空格去掉 
 striptags 渲染以前把值中全部的HTML标签都删除 

基本语句:函数

  if 语句spa

1  {% if condation%}
2      第一分支语句
3  {% else %}
4      第二分支语句
5  {% endif %}

 

  for语句code

1 { % for comment in comments %}
2 <li>{%commet%}</li>
3 {% endfor %}

  宏: 宏的使用方法相似于声明一个函数,能够将经常使用的功能封装起来,放在单独的文件当中,而后再须要使用的位置进行引用便可htm

1 {% macro render_comment(comment) %}
2 <li> {{ comment }} </li>
3 {% endmacro %}
4 
5 {% for comment in comments %}
6 {{ render_comment(comment) }}
7 {% endif %}

 

  在其余文件中的宏的引用对象

1 {% import 'macros.html' as macros %}
2 {% for comment in comments %}
3 {{ macros.render_comment(comment) }}
4 {% endfor %}

 

  须要在多处重复使用的模板代码片断能够写入单独的文件当中,再包含所在全部模板中,以免重复blog

1 {% include ‘common.html’ %}

 

  另外一种代码复用的方式是模板继承,它相似于python代码中的继承。首先,建立爱你一个模板基类文件“base.html”继承

 1 <html>
 2 <head>
 3 {% block head %}
 4 <title>{% block title %}{% endblock %} - My Application</title>
 5 {% endblock %}
 6 </head>
 7 <body>
 8 {% block body %}
 9 {% endblock %}
10 </body>
11 </html>

  衍生模板: block 标签订义的元素能够在衍生模板中进行修改,例如,咱们定义了名为head\title和body的块。

 1 {% extends "base.html" %}
 2 {% block title %} Indexx {% endblock %}
 3 {% block head %}
 4 {{ super() }}
 5 <style>
 6 </style>
 7 {% endblock %}
 8 {% block body %}
 9 <h1> Hello, World! </h1>
10 {% endblock %}

  extends指令声明这个模板衍生自base.html。在extends指令后,基模板中的3个块被从新定义,模板引擎会将其插入适当的位置。注意新定义的hea块,在基类模板中其内容不是空的,因此使用super() 函数获取原来的内容。

 

以上内容来自于书中摘抄,若有侵权请告知删除。

相关文章
相关标签/搜索