視圖函數不能面向對象編程,利用類視圖來代替視圖函數來解決這個問題html
導入視圖類 View前端
from flask.views import Viewjava
編寫一個視圖子類python
利用View子類獲取到一個視圖方法django
MyView.as_view('test')編程
注意:.as_view方法的放回值是一個方法,並且該方法的名字就是傳進去的參數json
將獲取到的視圖方法和路徑對應起來flask
類視圖的原理後端
把as_view方法返回的結果賦值給view_func
as_view方法返回的是一個方法(注意:as_view方法傳入的參數就是as_view返回的那個方法的名字),該方法會調用dispatch_request方法
一旦路由進來,就會調用 dispatch_request 方法
類視圖的目的就是實現邏輯分離、方便管理cookie
利用視圖函數實現不一樣的請求執行不一樣的邏輯時比較複雜,須要在視圖函數函數中進行判斷;若是利用方法視圖實現就比較簡單
導入方法視圖類
from flask.views import MethodView
建立方法視圖子類
注意:視圖類中的方法就是支持的請求類型
利用方法視圖子類建立一個視圖函數
TestMethodView.as_view('testMethodView')
注意:as_view返回的是一個視圖函數,並且該視圖函數逇名稱就是傳進去的參數
將獲取到的視圖方法和路徑對應起來
app.add_url_rule('/test02/', view_func=TestMethodView.as_view('testMethodView'))
雖然在方法視圖中定義的函數就是支持的請求類型,可是咱們能夠在配置路徑時指定哪一個路徑對應哪中類型的請求
利用方法視圖子類獲取一個名字爲testMethodView02的視圖函數,該視圖函數只能支持GET請求,並且支持轉換器
利用利用方法視圖子類獲取一個名字爲testMethodView03的視圖函數,該視圖函數只能支持POST請求
模擬POST請求
一、模板的使用
Flask使用的是Jinja2模板,因此其語法和Django無太大差異
Flask中模板裏面,執行函數時,須要帶()才執行
1.爲了防止xss攻擊,加了驗證,因此頁面上顯示字符串的形式,解決辦法,有兩種方法
方法一:在後端使用Markup,等價於Django裏的mark_safe
方法二:在前端使用safe
2.靜態文件的兩種導入方式
目錄結構:
方式一:
方式二:
3.flask中模板語法不提示,解決辦法
點擊選擇jinja2
二、自定義模板方法
Flask中自定義模板方法的方式和Bottle類似,建立一個函數並經過參數的形式傳入render_template,
run.py
index.html
PS:模板繼承的方法和django的同樣。
3.宏
只有定義的東西在不少地方去使用的時候纔去用它,
html
至關於在頁面上定義了一個名爲xx的'函數',這個函數接收3個參數,咱們給type和value寫上了默認值,此時調用,咱們還須要傳入一個參數,咱們此時傳入了一個n1,則
頁面上會生成3個input框,name都爲n1
原文連接:
https://www.cnblogs.com/huchong/p/8227606.html
識別圖中二維碼,領取python全套視頻資料