最近開始學習python,就作了一個簡單的web服務。這個服務中用了Flask框架,這個可以快速地搭建web服務器,詳細過程請看連接描述。建立的文件目錄以下css
在前臺頁面中只需建立基本的表單內容,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