Python之模板繼承 and http綜合
1.模板的繼承
模板繼承語法:
1.如何繼承某個模板? {% extends ''模板名稱" %} 2.如何深挖和填坑? 深挖: {% block 名稱 %} 預設值 {% endblock %} 3.如何呼叫/繼承被替代的模板? 挖坑: {% block 名稱 %} 預設值 {% endblock %} 填坑: { % block 名稱 % } #如何繼承挖坑的的預設值 {{ super () }} #後面寫新加的方法 。。。。 {{ endblock %}
2.常見http方法之get和post
首先有兩個重要的模組
requests:在Flsak中由全域性的request物件來提供資訊。
屬性:
1.request.method: 請求的方法
2.request.form: 返回form的內容
3.request.args: 返回請求中的引數
4.request.cookies: cookies資訊
5.request.headers: 請求的headers資訊,返回的結果是個列表
6.date,files: date是請求的資料,files是請求上傳的檔案
1. 常見HTTP請求方法: GET: 1). 獲取資訊 2). 提交的資訊會展示在url: http://www.wewtos.org/login?user=westos&passwd=westos POST:1). 提交資訊, 不在url裡面展示, 有利於資料的安全性; HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲得表頭 PUT:從客戶端向伺服器傳送的資料取代指定的文件的內容 DELETE:請求伺服器刪除指定的頁面 TRACE:回顯伺服器收到的請求,主要用於測試和診斷 2.預設路由接受的請求方法為__get__ 如何指定接收多個HTTP請求的方法? @app.route('/login/',methods=['GET','POST'] ) 檢視函式:def login( ): 3. 如何判斷使用者請求的HTTP方法? request.method 如何獲取使用者POST請求提交的表單資料? request.form['user'] 4.模板渲染(jinja2):
why?
python中生成html不易修改與維護, 所以將html的內容獨立到templates目錄中;
how?
1). 去當前專案目錄下尋找templtes是否存在?再去判斷templates目錄下是否有login.html檔案? 2). 讀取這個login.html檔案的內容, 作為render_template的返回值; 3). 最終返回給使用者瀏覽器; render_template('login.html') 5.重定向和錯誤 redirect 是一個重定向函式,後面可以跟網址 例如:return redirect('http://www.baidu.com') 頁面就會跳轉到百度頁面 模板渲染:return render_template('login.html', message="使用者名稱或者密碼錯誤")
程式碼如下
首先設定本地路由,連結到index.html頁面
設定login路由
捕獲異常,只要出現連結錯誤,就返回404.html頁面內容
同時設定另一個路由
執行程式碼後,連結到本地路由出現的是index.htnl頁面在瀏覽器中執行後的樣子
輸入別的網址都會彈出404報錯
下面是404.html頁面內容及報錯彈出框
這裡index.html繼承了base.html的內容
base.html頁面內容即為index.html顯示的內容
同時在index.html頁面我們設定了登陸選項如下
所以在index頁面中點選登陸,就會跳轉到/login/路由上
login.html頁面內容如下
這裡指定了當跳轉到login路由時,選擇的方法為’’ post ‘’,並顯示登陸按鈕和空格填寫資訊
該HTML頁面在瀏覽器中執行並判斷填寫資訊是否滿足,當不滿足時會被要求重新填寫,並告訴錯誤,即程式碼中的返回login.html頁面
當登陸成功則會返回index頁面
後面有一個新的路由
/user/加整形數
如果符合要求返回如下
不符合會彈出錯誤框
3.判斷是否登陸的裝飾器與網頁拓展
注意:此專案依賴於上個專案的所有檔案
以下是程式碼
這裡提前設定了一個字典 usersinfo,用來儲存已經存在的使用者及其密碼,可直接登陸
這裡也設定了一個裝飾器,用來判斷使用者是否登陸
判斷使用者名稱和密碼是否匹配,並且儲存到session中
使用者登出,當登陸進去後可以選擇登出,切換另一使用者;
其中session.pop( )用來移除session中的儲存資訊
並重定向返回index路由
使用者註冊,如果使用者名稱已經存在,則提示使用者存在並返回註冊頁面;否則向字典中新增新的使用者名稱和密碼,然後返回到登陸頁面
實驗結果如下
在base.html中構建橋樑,將路由和按鈕連線起來
所以登陸成功後會顯示使用者名稱
此時已經登陸成功
而註冊頁面也登陸頁面是差不多的,如圖
在註冊時,除了userinfo裡已存在的westos使用者,其他使用者都可以註冊
這裡有必要說明,還有檢查本機各項效能的程式碼
同樣也是一個新的路由
而sysinfo.html頁面內容如下
最終在瀏覽器中返回的結果如下