如何快速掌握[python][flask] Jinja 模板?
摘要:Flask 和 Django 附带了强大的 Jinja 模板语言。 对于之前没有接触过模板语言的人来说,这类语言基本上就是包含一些变量,当准备渲染呈现 HTML 时,它们会被实际的值替换。 这些变量放在标记或分隔符之前。例如:Jinja 模
目录1、快速体验2、Flask 最小 DEMO3、模板继承4、Super Blocks5、Macros6、自定义过滤器7、结论参考链接
Flask 和 Django 附带了强大的 Jinja 模板语言。
对于之前没有接触过模板语言的人来说,这类语言基本上就是包含一些变量,当准备渲染呈现 HTML 时,它们会被实际的值替换。
这些变量放在标记或分隔符之前。例如:Jinja 模板使用 {% ... %} 表示循环,{{ ... }} 表示一个表达式运算结果返回。
Jinja 模板其实是 html 文件。一般情况下放在 Flask 工程的 /templates 目录下
1、快速体验
跑下面的各种 demo 之前,确保你已经安装了 Jinja (pip install jinja2)
>>> from jinja2 import Template
>>> t = Template("Hello {{ something }}!")
>>> t.render(something="World")
u'Hello World!'
>>> t = Template("My favorite numbers: {% for n in range(1,10) %}{{n}} " "{% endfor %}")
>>> t.render()
u'My favorite numbers: 1 2 3 4 5 6 7 8 9 '
这个 demo 展示了模板中的变量(表达式)是如何最终被替换和渲染的。
2、Flask 最小 DEMO
整个的参考代码可以在这里获得:HERE
不过博主建议按照下面步骤一步步来:
1)安装 flask
➜ pip install flask
2)创建工程目录结构:
➜ mkdir flask_example
➜ cd flask_example
➜ mkdir templates
➜ cd ..
➜ touch run.py
➜ touch requirements.txt
3)编写 run.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def template_test():
return render_template('template.html', my_string="Wheeeee!", my_list=[0,1,2,3,4,5])
if __name__ == '__main__':
app.run(debug=True)
这里,我们创建了一个 / 路由,当我们访问服务器根路由时,会通过 render_template 将 template.html 渲染,其中 my_string 和 my_list 就是准备传给模板的实际的值。
