模板渲染
用 Python 生成 HTML 十分无趣,而且相当繁琐,因为你必须手动对 HTML 做转义来保证应用的安全。为此,Flask 配备了Jinja2模板引擎。
你可以使用render_template()方法来渲染模板。你需要做的一切就是将模板名和你想作为关键字的参数传入模板的变量。这里有一个展示如何渲染模板的简例:
from flask import render_template
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
return render_template('hello.html', name=name)
Flask 会在templates文件夹里寻找模板。所以,如果你的应用是个模块,这个文件夹应该与模块同级;如果它是一个包,那么这个文件夹作为包的子目录:
情况 1: 模块:
/application.py
/templates
/hello.html
情况 2: 包:
/application
/__init__.py
/templates
/hello.html
关于模板,你可以发挥 Jinja2 模板的全部实例。更多信息请见Jinja2 模板文档。
这里有一个模板实例:
<!doctype html>
<title>Hello from Flask</title>
{ % if name % }
<h1>Hello { { name } }!</h1>
{ % else % }
<h1>Hello World!</h1>
{ % endif % }
在模板里,你也可以访问request、session和g[1]对象, 以及get_flashed_messages()函数。
1. 模板基础 block
跟django一毛一样! 点击查看!
模板继承让模板用起来相当顺手。如欲了解继承的工作机理,请跳转到模板继承模式的文档。最起码,模板继承能使特定元素 (比如页眉、导航栏和页脚)可以出现在所有的页面。
自动转义功能默认是开启的,所以如果name包含 HTML ,它将会被自动转义。如果你能信任一个变量,并且你知道它是安全的(例如一个模块把 Wiki 标记转换为 HTML),你可以用Markup类或|safe过滤器在模板中把它标记为安全的。在 Jinja 2 文档中,你会看到更多的例子。