接触过jrender的人都会很容易上手这种模板模式的(没接触的我觉得看完本章就会懂了)。废话不多说,继续讲
1、先看模板文件跟需要运行的.py文件的层级关系:
flask_demo.py于模板文件templates文件夹应当在同一层级,要不会报错:notFound
2、编辑模板文件,不需要body体及html体等,直接编辑需要的代码段:
<!doctype html>
这个是模板文件,有点像jrender中的模板定义一样。你好啊,{{name}}!你的密码是:{{pw}}
就两行,保存该文件放到templates文件夹下就别管这个文件了。
3、编写后台代码:
# jinja2模板定义
@app.route('/temp/', methods=['POST'])
def use_template():
if request.values.get('nm') is not '':
return render_template('hello.html', name=request.values.get('nm') \
, pw=request.values.get('pw'))
来看这段代码,没啥,主要注意一下,上面要先导入render_template这个模块,然后就可以编写主要逻辑代码了,主要是,render_template()方法,中要指定需要渲染的模板,以及后面给模板中的预留部分填值。
前台:
<!DOCTYPE html>
<html>
<head>
<title>this is a html page</title>
</head>
<body>
<form action="http://localhost:5000/httpdemo" method="post" >
<div id="ct">
姓名:<input type="text" name="nm"/><br>
密码:<input type="text" name="pw"/><br>
<input type="submit" name="sb" value="提交" />
</div>
</form>
</body>
</html>
就基本表单。以及action要对应后台要处理的方法所绑定的route
4、运行结果截图如下:
Jinja2模板引擎使用以下符号完成从HTML转义。
{% ... %}用于语句
{{ ... }}用于表达式可以打印到模板输出
{# ... #}用于未包含在模板输出中的注释
# ... ##用于行语句
总结:通过模板处理,可以很好地实现逻辑处理与页面渲染分开,易于维护和处理,其余部分自己拓展,包括在模板文件中嵌入表达式、代码块等。