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