一、Flask提供的render_tamplate函數吧Jinja2模板引擎集成到了程序中。render_tamplate函數第一個參數是模板的文件名。隨後的參數都是鍵值對,標識模板中變量對應的真實值html
# -*- coding:utf-8-*- from flask_script import Manager from flask import Flask, render_template app = Flask(__name__) anager = Manager(app) @app.route('/') def index(): return render_template('index.html') @app.route('user/name') def user(name): return render_template('user.html', name=name) if __name__ == '__main__': app.run(debug=True) |
*******************************華麗分割線*******************************flask
二、Jinja2能識別全部類型的變量,過濾器名稱添加在變量名以後,中間使用豎線分隔,例如:api
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>hellom,{{ name | capitalize }}</h1> </body> </html>
capitalize:把值的首字轉換成大寫,其餘字母轉換成小寫app
Jinja2變量過濾器以下:函數
safe 渲染值時不轉義spa
capitalize 把值的首字轉換成大寫,其餘字母轉換成小寫debug
lower 把值轉換成小寫形式server
upper 把值轉換成大寫形式htm
title 把值中每一個單詞的首字母都轉換成大寫繼承
trim 把值的首尾空格都去掉
striptags 渲染以前把值中全部的HTML標籤都刪掉
*******************************華麗分割線*******************************
三、須要在多處重複使用的模板代碼片斷能夠寫入單獨的文件,再包含在全部的模板中,以免重複:
{% include 'XXXX.html' %}
另外一種重複使用代碼的強大方式是模板繼承,它相似於Python代碼中的繼承
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {% include 'index.html' %} </body> </html>
*******************************華麗分割線*******************************
四、自定義錯誤頁面
@app.errorhandler(404) def page_not_found(e): return render_template('404.html'), 404 @app.errorhandler(500) def internal_server_error(e): return render_template('500.html'), 500
*******************************華麗分割線*******************************