赞
踩
Jinja2简介
Jinja2模板语法的大量灵感来自于 Django 和 Python 。
Jinja模板只是一个文本文件,可以基于模板生成任何基于文本的格式(HTML、XML、CSV、LaTeX等),也即可以使用jinja2的语法最终放到格式为HTML、XML、CSV等中使用,一般用在前端的项目中,渲染 HTML 文件。
Flask 是使用 Jinja2 这个模板引擎来渲染模板
基本语法
注释 {#…#}
例如:{#这是一个注释#},这一行代码是不会被渲染、处理的,起注释作用;
变量 {{…}}
如上面的例子, {{}}是占位符,Jinja2渲染时会将这些占位符替换成真实值。它支持python中的所有数据类型,如字符串、字典、列表等。
结构控制 {% … %}
该符号包裹的内容表示控制结构,如if、for,include,注意使用for,if需要在代码块后面加上{% endif %}、{% endfor %}表示结束
{% for … %}
{% endfor %}
{% if … %}
{% elif … %}
{% else %}
{% endif %}
{% include “路径/文件.html” %} 把文件引入到当前的位置 实现模板代码的复用,include 会将导入的代码相当于粘贴到了你导入的位置上 导入文件的所有代码都会在导入的位置显示出来。
基本用法
创建和渲染模板的最基本方法是通过 Template,通过创建一个Template的实例,
会得到一个新的模板对象,模板对象有一个render_template()的方法,该方法在调用dict或keywords参数时填充模板。
也即:如果希望向HTML页面传递参数,可以在函数中申明一个变量,然后使用render_template()函数传递过去。在render_template()函数中将视图函数中的变量赋值给HTML页面中的变量。然后通过模板渲染,就实现传值。
注意:变量在Jinja2控制结构{% %}中使用不需要使用Jinja2变量符{{ }},感觉是使用了python风格。在HTML页面其它位置需要使用Jinja2变量符{{ }}。
<!doctype html>
<table border = 1>
{% for key, value in result.items() %}
<tr>
<th> {{ key }} </th>
<td> {{ value }}</td>
</tr>
{% endfor %}
</table>
说明:HTML模板中添加的注释 {#…#}、变量 {{…}}、结构控制 {% … %}等符号在纯HTML页面调试的时候浏览器会加载出来,但通过视图处理后只会渲染出对应的值,不会显示这些变量符。如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
我的模板html内容
<br />{{ my_str22 }}
<br />{{ my_int }}
<br />{{ my_array }}
<br />{{ my_dict }}
</body>
</html>
纯HTML页面在浏览器中打开是这样:
经如下视图处理:
from flask import Flask, render_template,Blueprint #form = Blueprint('formDis', __name__) form = Blueprint('formDis111', __name__, url_prefix="/news") #实例化蓝图对象 #两个必要参数': # 第一个参数:蓝图名字,自定义' # 第二个参数:__name__'蓝图所在的模块或者包,一般为'__name__'变量; # 第三个参数:url_prefix,非必填,,表示在该蓝图下,所有的url地址访问路径中都要加上xxx路径,即域名/xxx/路由 @form.route('/formplay') #在蓝图对象上进行操作,路由 def index(): # 往模板中传入的数据 my_str11 = 'Hello Word22' my_int = 10 my_array = [3, 4, 2, 1, 7, 9] my_dict = { 'name': 'xiaoming', 'age': 18 } return render_template('hello.html', my_str22=my_str11, my_int=my_int, my_array=my_array, my_dict=my_dict )
打开urll地址:http://10.12.225.128:5000/news/formplay,展示如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。