flask框架--模板
今天又是一個精彩有無聊的一天,不過隨著知識的緩慢的增加我的內心也充滿了幹勁,雖然前進的有些緩慢 但我不會這麼容易放棄的,一定要相信自己,不要灰心
好了 ~ 不說廢話了 , 我自己聽的都有些受不了了 。
我呢 , 今天學習了模板,在這裡我給大家說說幾句 關於模板的
首先說一下模板的作用:模板可以承擔檢視函式又可以返回響應的內容
檢視函式只負責業務邏輯和資料處理(業務邏輯方面),而模板則取到檢視函式的資料結果進行展示(檢視展示方面)
程式碼結構清晰,耦合度底。
模板引擎有很多,不過在這裡我給大家說的是Jinjia2 ,它是在Python下一個被廣泛應用的模板引擎,是有Python實現的模板語言,他的設計思想來源於Django的模板引擎,並擴充套件了其語法金和一系列強大的功能,其實Flask內建的模板語言。
模板語言:是一種被設計來自動生成文件的簡單文字格式,在模板語言中,一般都會把一些變數傳給模板,途歡模板的特定文職上預先定義好的佔位變數名。
渲染模板函式:Flask提供的render_template函式封裝了該模板引擎,render_template 函式的第一個引數是模板的檔名,後面的引數都是鍵值對,表示模板中變數對應的真實值。
{{}} 來表示變數名,這種語法叫做變數程式碼塊,在變數程式碼塊中可以是任意Python型別或者物件,只要能夠被轉換成str()型別就可以,{%%} 用這個來定義的控制塊程式碼,可以實現一些語言層次的功能,比如迴圈語句或者if語句,{##} 使用這個符號進行註釋,註釋的內容不會再html中被渲染出來。
接下來我給大家展示一個例項:
第一步 當然先匯入模組啦
from flask import,render_template
建立物件
app = Flask(__name__)
匯入配置檔案 #我喜歡這個方法,當然也可以用其他的方法
app.config.from_pyfile('config.ini')
路由
@app.route('/')
def index():
context = {}
context['my_str'] = ‘你好世界’
context['my_int'] = 100
context['my_list'] = [4,3,2,4,2,3]
context['my_dict'] = {'name':'xiaoming','age':19}
使用render_template模組來渲染模板檔案,通過第二個引數傳遞資料變數,通過**引用來將巢狀dict直接傳遞給模板
return render_template('day3.html',**context)
if __name__ == "__main__":
app.run()
這是一個模板檔案,還得寫一個day3.html的檔案的網頁模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>flask網頁模板的學習</title> </head> <body> <div> 這是我們的網頁模板 <br /><br /> {# 這裡是註釋,最基本的模板語法,輸出一個變數 #} {{ my_str }} <br /><br /> {# 模板語法可以做簡單的運算操作#} {{my_int+44}} <br /><br /> {# 模板語法可以以下標引用的方式輸出list元素#} {{my_list [0] }} {{my_list.1 }} <br /><br /> {{my_dict['name']}} {{my_dict.age}} <br /><br /> {# 使用{%%}來定義簡單的邏輯控制程式碼#} {% if my_int %} 整形存在 {% else%} 不存在 {# 使用if判斷,一定要有endif 用來結束邏輯判斷#} {% endif%}<ul> {# 使用for迴圈來遍歷list , for 也必須endfor 用來結束迴圈 #} {% for item in my_list %} <li>{{item}}</li> {% endfor %} </ul>
{# 使用 if for 巢狀來實現單雙行背景色 #} <table style="border:1px solid black; padding:5px;"> {% for item in my_list %} {# 使用loop關鍵字可以呼叫迴圈的索引,用來判斷下標單雙數 #} {% if loop.index % 2 == 0 %} <tr style="<td>{{ item }}</td></tr> {% else %} <tr style="<td>{{ item }}</td></tr> {% endif %}
{% endfor %} </table> </div> </body> </html>
接下來說一下過濾器:
過濾器的本質就是函式。有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化,運算等等,而在模板中是不能直接呼叫Python中的某些方法,那麼過濾器的作用就找到了。
使用方法:變數名|過濾器 {{variable | filter_name(*args)}},如果沒有任何引數傳給過濾器,則可以吧吧括號省略掉