前臺頁面
在前臺頁面中只需創建基本的表單內容,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、明哥會陪着你陪你一起共同進步!
手打不易,有用的話,請記得關注轉發。