python之web開發:flask實現登陸

前臺頁面

在前臺頁面中只需創建基本的表單內容,method使用get,登錄和註冊的action分別爲/login、/registuser,代碼如下所示:

登陸

<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
        <form method="get" action='/login'>
            <label>用戶名:<input type="text" name="user" value=""></label><br>
            <label>密碼:<input type="password" name="password" value=""></label><br>
            <input type="submit" value="登錄">
        </form>
    </body>
</html>

註冊

<!DOCTYPE html>
<html lang="en">
    <head>
        <title></title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/style.css" rel="stylesheet">
    </head>
    <body>
        <form method="get" action='/registuser'>
            <label>用戶名:<input type="text" name="user" value=""></label>
            <label>密碼:<input type="password" name="password" value=""></label>
            <input type="submit" value="註冊">
        </form>
    </body>
</html>

導入模塊

python使用Flask需要導入Flask模塊,如果沒有這個模塊就參見前面的鏈接去安裝。使用mysql需要導入pymysql模塊,這個具體是什麼,請自行百度。總之,python需要用到特定的模塊的時候,需要去導入模塊,本例具體導入的內容如下所示:

#導入數據庫模塊
import pymysql
#導入Flask框架,這個框架可以快捷地實現了一個WSGI應用 
from flask import Flask
#默認情況下,flask在程序文件夾中的templates子文件夾中尋找模塊
from flask import render_template
#導入前臺請求的request模塊
from flask import request   
import traceback  
#傳遞根目錄
app = Flask(__name__)

路由訪問靜態文件

在Flask創建服務器後,照着前面圖片的文件目錄,通過下面的路由就能通過服務器訪問靜態的html文件,代碼如下所示:

#默認路徑訪問登錄頁面
@app.route('/')
def login():
    return render_template('login.html')

#默認路徑訪問註冊頁面
@app.route('/regist')
def regist():
    return render_template('regist.html')

此時在瀏覽器中通過localhost:5000(Flask默認端口爲5000)就能訪問login.html文件,localhost:5000/register就能訪問register.html。

處理前臺請求及對數據庫進行操作

跟所有的web服務思路一樣,獲取前臺的請求,根據不同的請求路由執行不同的函數內容。這裏以註冊爲例,當表單填寫完後,點擊註冊按鈕,數據向後臺請求,請求路由爲/registuser。python根據相對應的路由執行函數,這裏函數處理的內容是把前臺的用戶名和密碼插入到數據庫中(前提是已經在數據庫中創建好了user表)。插入成功就跳轉到登錄頁面,插入失敗就返回註冊失敗的內容。登錄的邏輯內容也類似,就不再細述,具體代碼如下:

#獲取註冊請求及處理
@app.route('/registuser')
def getRigistRequest():
#把用戶名和密碼註冊到數據庫中
    db = pymysql.connect("localhost","root","","DB" )
    # 使用cursor()方法獲取操作遊標 
    cursor = db.cursor()
    # SQL 插入語句
    sql = "INSERT INTO user(user, password) VALUES ("+request.args.get('user')+", "+request.args.get('password')+")"
    try:
        # 執行sql語句
        cursor.execute(sql)
        # 提交到數據庫執行
        db.commit()
         #註冊成功之後跳轉到登錄頁面
        return render_template('login.html') 
    except:
        #拋出錯誤信息
        traceback.print_exc()
        # 如果發生錯誤則回滾
        db.rollback()
        return '註冊失敗'
    # 關閉數據庫連接
    db.close()
#獲取登錄參數及處理
@app.route('/login')
def getLoginRequest():
#查詢用戶名及密碼是否匹配及存在
    db = pymysql.connect("localhost","root","","DB" )
    # 使用cursor()方法獲取操作遊標 
    cursor = db.cursor()
    # SQL 查詢語句
    sql = "select * from user where user="+request.args.get('user')+" and password="+request.args.get('password')+""
    try:
        # 執行sql語句
        cursor.execute(sql)
        results = cursor.fetchall()
        print(len(results))
        if len(results)==1:
            return '登錄成功'
        else:
            return '用戶名或密碼不正確'
        # 提交到數據庫執行
        db.commit()
    except:
        # 如果發生錯誤則回滾
        traceback.print_exc()
        db.rollback()
    # 關閉數據庫連接
     db.close()
    
if __name__ == '__main__':
    app.run(debug=True)

此例僅僅是爲完成python作爲web服務器的流程。詳細功能實現請自行處理。

完整代碼地址請:點擊訪問

本文是“明哥陪你學Python”系列章節之一,如果你對Python有更多興趣,或有問題,可以私信與明哥聯繫,我會陪你一起解決,其它相關章節可以從首頁中的“明哥陪你學Python”列表進行查看。

最後:如果你正在學習Python的路上,或者準備打算學習Python、明哥會陪着你陪你一起共同進步!

手打不易,有用的話,請記得關注轉發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章