摘要:簡述最近開始學(xué)習(xí),就做了一個(gè)簡單的服務(wù)。這里以注冊為例,當(dāng)表單填寫完后,點(diǎn)擊注冊按鈕,數(shù)據(jù)向后臺請求,請求路由為。插入成功就跳轉(zhuǎn)到登錄頁面,插入失敗就返回注冊失敗的內(nèi)容。
簡述
最近開始學(xué)習(xí)python,就做了一個(gè)簡單的web服務(wù)。這個(gè)服務(wù)中用了Flask框架,這個(gè)能夠快速地搭建web服務(wù)器,詳細(xì)過程請看鏈接描述。創(chuàng)建的文件目錄如下
前臺頁面在前臺頁面中只需創(chuàng)建基本的表單內(nèi)容,method使用get,登錄和注冊的action分別為/login、/registuser,代碼如下所示:
導(dǎo)入模塊
python使用Flask需要導(dǎo)入Flask模塊,如果沒有這個(gè)模塊就參見前面的鏈接去安裝。使用mysql需要導(dǎo)入pymysql模塊,這個(gè)具體是什么,請參見鏈接描述??傊?,python需要用到特定的模塊的時(shí)候,需要去導(dǎo)入模塊,本例具體導(dǎo)入的內(nèi)容如下所示:
#導(dǎo)入數(shù)據(jù)庫模塊 import pymysql #導(dǎo)入Flask框架,這個(gè)框架可以快捷地實(shí)現(xiàn)了一個(gè)WSGI應(yīng)用 from flask import Flask #默認(rèn)情況下,flask在程序文件夾中的templates子文件夾中尋找模塊 from flask import render_template #導(dǎo)入前臺請求的request模塊 from flask import request import traceback #傳遞根目錄 app = Flask(__name__)路由訪問靜態(tài)文件
在Flask創(chuàng)建服務(wù)器后,照著前面圖片的文件目錄,通過下面的路由就能通過服務(wù)器訪問靜態(tài)的html文件,代碼如下所示:
#默認(rèn)路徑訪問登錄頁面 @app.route("/") def login(): return render_template("login.html") #默認(rèn)路徑訪問注冊頁面 @app.route("/regist") def regist(): return render_template("regist.html")
此時(shí)在瀏覽器中通過localhost:5000(Flask默認(rèn)端口為5000)就能訪問login.html文件,localhost:5000/regist就能訪問regist.html。
處理前臺請求及對數(shù)據(jù)庫進(jìn)行操作跟所有的web服務(wù)思路一樣,獲取前臺的請求,根據(jù)不同的請求路由執(zhí)行不同的函數(shù)內(nèi)容。這里以注冊為例,當(dāng)表單填寫完后,點(diǎn)擊注冊按鈕,數(shù)據(jù)向后臺請求,請求路由為/registuser。python根據(jù)相對應(yīng)的路由執(zhí)行函數(shù),這里函數(shù)處理的內(nèi)容是把前臺的用戶名和密碼插入到數(shù)據(jù)庫中(前提是已經(jīng)在數(shù)據(jù)庫中創(chuàng)建好了user表)。插入成功就跳轉(zhuǎn)到登錄頁面,插入失敗就返回注冊失敗的內(nèi)容。登錄的邏輯內(nèi)容也類似,就不再細(xì)述,具體代碼如下:
#獲取注冊請求及處理 @app.route("/registuser") def getRigistRequest(): #把用戶名和密碼注冊到數(shù)據(jù)庫中 #連接數(shù)據(jù)庫,此前在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫TESTDB db = pymysql.connect("localhost","root","123456","TESTDB" ) # 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor() # SQL 插入語句 sql = "INSERT INTO user(user, password) VALUES ("+request.args.get("user")+", "+request.args.get("password")+")" try: # 執(zhí)行sql語句 cursor.execute(sql) # 提交到數(shù)據(jù)庫執(zhí)行 db.commit() #注冊成功之后跳轉(zhuǎn)到登錄頁面 return render_template("login.html") except: #拋出錯(cuò)誤信息 traceback.print_exc() # 如果發(fā)生錯(cuò)誤則回滾 db.rollback() return "注冊失敗" # 關(guān)閉數(shù)據(jù)庫連接 db.close()
#獲取登錄參數(shù)及處理 @app.route("/login") def getLoginRequest(): #查詢用戶名及密碼是否匹配及存在 #連接數(shù)據(jù)庫,此前在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫TESTDB db = pymysql.connect("localhost","root","123456","TESTDB" ) # 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor() # SQL 查詢語句 sql = "select * from user where user="+request.args.get("user")+" and password="+request.args.get("password")+"" try: # 執(zhí)行sql語句 cursor.execute(sql) results = cursor.fetchall() print(len(results)) if len(results)==1: return "登錄成功" else: return "用戶名或密碼不正確" # 提交到數(shù)據(jù)庫執(zhí)行 db.commit() except: # 如果發(fā)生錯(cuò)誤則回滾 traceback.print_exc() db.rollback() # 關(guān)閉數(shù)據(jù)庫連接 db.close() #使用__name__ == "__main__"是 Python 的慣用法,確保直接執(zhí)行此腳本時(shí)才 #啟動服務(wù)器,若其他程序調(diào)用該腳本可能父級程序會啟動不同的服務(wù)器 if __name__ == "__main__": app.run(debug=True)
此例僅僅是為完成python作為web服務(wù)器的流程,很多檢驗(yàn)控制就沒細(xì)細(xì)去做。github地址為鏈接描述
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41263.html
摘要:根據(jù)中華人民共和國信息產(chǎn)業(yè)部第十二次部務(wù)會議審議通過的非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)備案管理辦法精神,在中華人民共和國境內(nèi)提供非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù),應(yīng)當(dāng)辦理備案。未經(jīng)備案,不得在中華人民共和國境內(nèi)從事非經(jīng)營性互聯(lián)網(wǎng)信息服務(wù)。 當(dāng)我們開發(fā)了一個(gè)簡單的 Flask 程序,想把項(xiàng)目部署上線,我們可以選擇傳統(tǒng)的部署方式或者云部署方式把項(xiàng)目部署上線。在本文中,筆者將使用 阿里云輕量應(yīng)用服務(wù)器 安裝 C...
摘要:利用開發(fā)個(gè)小型商城我們本期的教程是教大家如何利用開發(fā)一個(gè)小型的商城這里所說的小型商城只是功能上的簡樸。并于年月在許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手來命名的。是重量級選手中最有代表性的一位。 利用Django開發(fā)個(gè)小型商城 我們本期的教程是教大家如何利用Django開發(fā)一個(gè)小型的商城,這里所說的小型商城只是功能上的簡樸。 作者:黃志成(小黃) 作者博客:博客地址 前提 1...
閱讀 2580·2023-04-25 17:27
閱讀 1887·2019-08-30 15:54
閱讀 2416·2019-08-30 13:06
閱讀 3022·2019-08-30 11:04
閱讀 800·2019-08-29 15:30
閱讀 771·2019-08-29 15:16
閱讀 1801·2019-08-26 10:10
閱讀 3646·2019-08-23 17:02