flask 框架下的jinja2模块引擎(1):http://www.javashuo.com/article/p-hfvsbwpn-bm.htmlhtml
flask 框架下的jinja2模块引擎(2):http://www.javashuo.com/article/p-febuwrer-s.htmlpython
本文主要记录下 jinja2 的模板继承。sql
在模板中,可能会遇到如下状况:flask
像遇到这种状况,可使用 JinJa2 模板中的 继承 来进行实现安全
模板继承是为了重用模板中的公共内容。通常Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容能够定义在父模板中,子模板直接继承,而不须要重复书写。session
例若有一个父模板 base.html 。有两个子模板01.html 和 02.html 都是继承该模板的某一部分。框架
base.html 以下:函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}Title{% endblock title %}</title> </head> <body> <p>父模板的头部,每一个网页都同样的,不须要更改</p> {% block content %} <p>父模板的中间部分,每一个网页都不同的,须要更改</p> {% endblock content %} <p>父模板的脚部,每一个网页都同样的,不须要更改</p> </body> </html>
{% block xxx %} 与 {% endblock xxx %} 的中间能够进行替换。而其余的内容能够继承。模板继承能够极大地提升开发效率。post
01.html 以下:网站
{% extends "base.html" %} {% block title %} <p>01的标题</p> {% endblock title %} {% block content %} <p>01页面独有的内容</p> {% endblock content %}
02.html 以下:
{% extends "base.html" %} {% block title %} <p>02的标题</p> {% endblock title %} {% block content %} <p>02页面独有的内容</p> {% endblock content %}
你能够从模板中直接访问Flask当前的config对象:
{{config.SQLALCHEMY_DATABASE_URI}} sqlite:///database.db
就是flask中表明当前请求的request对象:
{{request.url}}
http://127.0.0.1
为Flask的session对象
{{session.new}}
True
在视图函数中设置g变量的 name 属性的值,而后在模板中直接能够取出
{{ g.name }}
url_for会根据传入的路由器函数名,返回该路由对应的URL,在模板中始终使用url_for()就能够安全的修改路由绑定的URL,则不比担忧模板中渲染出错的连接:
{{url_for('home')}} /
若是咱们定义的路由URL是带有参数的,则能够把它们做为关键字参数传入url_for(),Flask会把他们填充进最终生成的URL中:
{{ url_for('post', post_id=1)}} /post/1