1. 程式人生 > >基於Flask框架搭建視訊網站的學習日誌(三)之原始web表單

基於Flask框架搭建視訊網站的學習日誌(三)之原始web表單

基於Flask框架搭建視訊網站的學習日誌(三)1.原始Web 表單

本節主要用於體驗一下前端後端直接資料的互動,樣例不是太完善,下一節會加入Flash處理,稍微完善一下頁面

(備註:建議先閱讀廖雪峰老師的部落格,MVC:Model-View-Controller,中文名“模型-檢視-控制器”)

負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器。(Flask-WTF擴充套件封裝了WTForms,並且有驗證表單資料的功能,這樣就可以少寫很多驗證輸入資料的程式碼,比如判斷兩次輸入的密碼是否相同等等)

本節先探究最原始的web表單如何實現,下節在使用WTF

一、首先,在HTML頁面中直接寫form表單:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post">
    <label>Username:</label> <input type = "text" name="username"> <br>
    <label>Password:</label> <input type = "password" name="password"> <br>
    <label>Make_sure:</label> <input type = "password" name="password2"> <br>
    <input type="submit" value="submit"> <br>
</form>

</body>
</html>

補充一些html知識:<br>表示換行;<hr>表示加一條分割線;由於name定義的是文字的名字,所以password和password2要區分開來,這在檢視函式中的request.form.get(‘name’)裡面的name要用到,這也就是MVC中的Model

二、檢視函式中獲取表單資料

明確目的:實現一個簡單的登入的邏輯處理

1、由於路由需要有get和post兩種請求方式,所以我們應該在程式碼中判斷請求方式(from flask import request)

2、獲取請求的引數,從表單中拿到資料

3、判斷引數是否填寫,密碼是否輸入

4、如果判斷都ok,就返回success

from flask import Flask, render_template, request
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST']) #由於路由需要有get和post兩種請求方式
def _hello():
    #1.判斷請求方式,用request.method
    if request.method == 'POST':  
        #2.獲取請求的引數,用request.form.get()
        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        print ('success')
        #3.判斷引數是否填寫,密碼是否輸入
        if not all([username, password, password2]):
            print("引數不完整")
        elif password != password2:
            print("密碼不一致")
        #4.如果判斷都ok,就返回success
        else :
            return 'success'
    return render_template('hello.html')


if __name__ == '__main__':
    app.run(debug=True)

HTML補充知識:

HTML 表單

表單是一個包含表單元素的區域。

表單元素是允許使用者在表單中輸入內容,比如:文字域(textarea)、下拉列表、單選框(radio-buttons)、複選框(checkboxes)等等。

表單使用表單標籤

來設定:

<form>
.
*input 元素*
.
</form>

<form>裡面的就是整個表單 ,<input>是輸入標籤,type定義輸入文字型別,name定義輸入文字的名字;

> > 文字域(Text Fields)

文字域通過<input type="text">標籤來設定,當用戶要在表單中鍵入字母、數字等內容時,就會用到文字域。

<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname">
</form>

瀏覽器顯示如下:

First name:
Last name:

注意:表單本身並不可見。同時,在大多數瀏覽器中,文字域的預設寬度是 20 個字元。


>>密碼欄位

密碼欄位通過標籤<input type="password"> 來定義:

<form>
Password: <input type="password" name="pwd">
</form>

瀏覽器顯示效果如下:

Password:

注意:密碼欄位字元不會明文顯示,而是以星號或圓點替代。