前置:理解渲染機制即上篇筆記中render_template()功能是如何實現的!
1)找到html檔案地址
2)讀取html檔案中的內容
3)替換html中的特殊字元
4)將html的內容傳送給瀏覽器
1 <!-- html檔案 --> 2 3 <!DOCTYPE html> 4 <html lang="en"> 5 <head> 6 <meta charset="UTF-8"> 7 <title>Title</title> 8 </head> 9 <body> 10 <nav> 11 導覽列 12 </nav> 13 <h1 style="color: #f00">你好, 當前的時間是:{{time}} {{user}}</h1> 14 </body> 15 </html>
1 # Flask py檔案 2 3 import os 4 from datetime import datetime 5 6 from flask import Flask,render_template 7 app = Flask(__name__) 8 9 10 @app.route('/') 11 def index(): 12 return 'index' 13 14 15 @app.route('/html') 16 def html_from_file(): 17 """ 把html檔案的內容在瀏覽器展現出來""" 18 return render_template('index.html') 19 20 21 @app.route('/show/html') 22 def html_show(): 23 """ 理解渲染機制 """ 24 # 1. 找到磁碟上的html檔案地址(全路徑) 25 file_name = os.path.join(os.path.dirname(__file__), 'templates', 'index.html') 26 print(file_name) 27 # 2. 讀取html檔案中的內容 28 now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') 29 with open(file_name, 'r', encoding='utf-8') as f: 30 html = f.read() 31 # 3. 替換html中的特殊字元({{time}}) 32 html = html.replace('{{time}}', now_time) 33 # 4. 將html的內容傳送給瀏覽器 34 return html
什麼是模板?
為什麼學模板?剛剛的範例程式碼,將所有的業務邏輯程式碼都寫在一個py檔案裡面,公共的業務變更需要修改多處程式碼;掌握模板之後,就可以解決上述問題。
模板引擎:可以簡單理解為,它就是對模板(html)中的內容按照一定規則(變數)進行替換。得到最終我們給使用者端展示的頁面(模板)
Jinja2的預設設定
什麼是跳脫?
把有特殊意義的字元顯示出來,例如:
範例:
常用場景:html常常會進行href頁面跳轉,如果直接指定路由(即路徑),當檢視函數路由發生變更時,就會找不到。實際開發中路由地址會變,但是檢視函數一般不會變,這時候我們就可以使用url_for對檢視函數進行反向解析獲取其路由,這樣html頁面就能正常跳轉了