1. 程式人生 > >Python之模板繼承 and http綜合

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頁面內容如下
在這裡插入圖片描述
最終在瀏覽器中返回的結果如下
在這裡插入圖片描述