Jinja2模板引擎(一)
简介
在flask框架中通常使用Jinja2模板引擎来实现复杂页面的渲染。
本章主要介绍Jinja2模板引擎的基本结构和使用方法。
- 如何使用flask框架渲染模板
- 在模板中传递一个或者多个参数
- if语句在模板中的运用
- for语句在模板中的使用
模板的实质上是一个静态包含HTML语法的全部或者片段的文本,也可包含由变量表示的动态部分
from flask import Flask # 导入flask框架模板
from flask import render_template#导入render_template模块
app = Flask(__name__) # flask实例化
@app.route('/') # 定义路由
def index(): # 定义试图函数
return render_template('index.html') # 返回值,使用render_template方法渲染模板
@app.route('/user/') # 定义路由,传递的参数名是,需要在函数的形参中定义同名的参数
def user(username):#定义视图函数
return render_template('user.html') # 渲染
if __name__ == '__main__': # 运行
app.run(debug=True)
注意:在templelates的文件下创建index.html和user.html,加载并且自行测试渲染。flask框架是通过render_template()函数来实现模板的渲染,要使用Jinja2模板引擎,需要使用from flask render_template命令导入render_template函数。
向模板中传递参数
flask 提供Jinja2模板来渲染模板的同时,还可以将程序中的参数或变量传递到指定的模板进行渲染
inde.html(值写出了不同的部分)
这是首页<\title>
首页中的文字<\h1>
user.html
这是用户中心<\title>
欢迎您:{{name}}<\h1>
app.py
from flask import Flask # 导入flask框架模板
from flask import render_template#导入render_template模块
app = Flask(__name__) # flask实例化
@app.route('/') # 定义路由
def index(): # 定义试图函数
return render_template('index.html') # 返回值,使用render_template方法渲染模板
@app.route('/user/') # 定义路由,传递的参数名是,需要在函数的形参中定义同名的参数
def user(username):#定义视图函数
return render_template('user.html',name=username) # 渲染
if __name__ == '__main__': # 运行
app.run(debug=True)
#render_template()函数第一个参数是指定模板文件的名称,第二个参数一般用于传递变量。
模板中接收变量值,需要把变量值放在{{}},如{{val}}等。模板中如果要写注释的话个格式为{##}
如{#br表示的是回车}
如果视图函数中有多个变量值,都需要传递给模板,可以使用**locals()方法。
def index():
#return render_template('index.html')
title='python键值对'#定义键值
author='tom_jack'#定义键值
return render_template('index.html',**locals)#渲染模板并传值**locals可以换成x=title,y=author页面中要有x,y变量。
主要如果使用**locals方法,此时模块中的{{title}}和{{author}}来可以直接使用。
模板之中的if控制语句
在Jinja2引擎模板中也可以使用if和for循环控制语句,控制模板的渲染的方向。
{%if condition %}