python3+flask+mysql實現登陸註冊

簡述

最近開始學習python,就作了一個簡單的web服務。這個服務中用了Flask框架,這個可以快速地搭建web服務器,詳細過程請看連接描述。建立的文件目錄以下css

clipboard.png

前臺頁面

在前臺頁面中只需建立基本的表單內容,method使用get,登陸和註冊的action分別爲/login、/registuser,代碼以下所示: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='/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須要用到特定的模塊的時候,須要去導入模塊,本例具體導入的內容以下所示: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文件,代碼以下所示:mysql

#默認路徑訪問登陸頁面
@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/regist就能訪問regist.html。git

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

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

#獲取註冊請求及處理
@app.route('/registuser')
def getRigistRequest():
#把用戶名和密碼註冊到數據庫中

    #鏈接數據庫,此前在數據庫中建立數據庫TESTDB
    db = pymysql.connect("localhost","root","123456","TESTDB" )
    # 使用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():
#查詢用戶名及密碼是否匹配及存在
    #鏈接數據庫,此前在數據庫中建立數據庫TESTDB
    db = pymysql.connect("localhost","root","123456","TESTDB" )
    # 使用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()
    

#使用__name__ == '__main__'是 Python 的慣用法,確保直接執行此腳本時才
#啓動服務器,若其餘程序調用該腳本可能父級程序會啓動不一樣的服務器
if __name__ == '__main__':
    app.run(debug=True)

此例僅僅是爲完成python做爲web服務器的流程,不少檢驗控制就沒細細去作。github地址爲連接描述web

相關文章
相關標籤/搜索