当前位置:   article > 正文

Jinja2

jinja2

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

说明: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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

纯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
                           )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

打开urll地址:http://10.12.225.128:5000/news/formplay,展示如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/191422
推荐阅读
相关标签
  

闽ICP备14008679号