免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
python3+flask+mysql實(shí)現(xiàn)登錄注冊(cè)

簡(jiǎn)述

最近開始學(xué)習(xí)python,就做了一個(gè)簡(jiǎn)單的web服務(wù)。這個(gè)服務(wù)中用了Flask框架,這個(gè)能夠快速地搭建web服務(wù)器,詳細(xì)過(guò)程請(qǐng)看鏈接描述。創(chuàng)建的文件目錄如下

前臺(tái)頁(yè)面

在前臺(tái)頁(yè)面中只需創(chuàng)建基本的表單內(nèi)容,method使用get,登錄和注冊(cè)的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>
<!--注冊(cè)模塊--!><!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="注冊(cè)">        </form>    </body></html>

導(dǎo)入模塊

python使用Flask需要導(dǎo)入Flask模塊,如果沒(méi)有這個(gè)模塊就參見前面的鏈接去安裝。使用mysql需要導(dǎo)入pymysql模塊,這個(gè)具體是什么,請(qǐng)參見鏈接描述??傊琾ython需要用到特定的模塊的時(shí)候,需要去導(dǎo)入模塊,本例具體導(dǎo)入的內(nèi)容如下所示:

#導(dǎo)入數(shù)據(jù)庫(kù)模塊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)入前臺(tái)請(qǐng)求的request模塊from flask import request   import traceback  #傳遞根目錄app = Flask(__name__)

路由訪問(wèn)靜態(tài)文件

在Flask創(chuàng)建服務(wù)器后,照著前面圖片的文件目錄,通過(guò)下面的路由就能通過(guò)服務(wù)器訪問(wèn)靜態(tài)的html文件,代碼如下所示:

#默認(rèn)路徑訪問(wèn)登錄頁(yè)面@app.route('/')def login():    return render_template('login.html')#默認(rèn)路徑訪問(wèn)注冊(cè)頁(yè)面@app.route('/regist')def regist():    return render_template('regist.html')

此時(shí)在瀏覽器中通過(guò)localhost:5000(Flask默認(rèn)端口為5000)就能訪問(wèn)login.html文件,localhost:5000/regist就能訪問(wèn)regist.html。

處理前臺(tái)請(qǐng)求及對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

跟所有的web服務(wù)思路一樣,獲取前臺(tái)的請(qǐng)求,根據(jù)不同的請(qǐng)求路由執(zhí)行不同的函數(shù)內(nèi)容。這里以注冊(cè)為例,當(dāng)表單填寫完后,點(diǎn)擊注冊(cè)按鈕,數(shù)據(jù)向后臺(tái)請(qǐng)求,請(qǐng)求路由為/registuser。python根據(jù)相對(duì)應(yīng)的路由執(zhí)行函數(shù),這里函數(shù)處理的內(nèi)容是把前臺(tái)的用戶名和密碼插入到數(shù)據(jù)庫(kù)中(前提是已經(jīng)在數(shù)據(jù)庫(kù)中創(chuàng)建好了user表)。插入成功就跳轉(zhuǎn)到登錄頁(yè)面,插入失敗就返回注冊(cè)失敗的內(nèi)容。登錄的邏輯內(nèi)容也類似,就不再細(xì)述,具體代碼如下:

#獲取注冊(cè)請(qǐng)求及處理@app.route('/registuser')def getRigistRequest():#把用戶名和密碼注冊(cè)到數(shù)據(jù)庫(kù)中    #連接數(shù)據(jù)庫(kù),此前在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)TESTDB    db = pymysql.connect("localhost","root","123456","TESTDB" )    # 使用cursor()方法獲取操作游標(biāo)     cursor = db.cursor()    # SQL 插入語(yǔ)句    sql = "INSERT INTO user(user, password) VALUES ("+request.args.get('user')+", "+request.args.get('password')+")"    try:        # 執(zhí)行sql語(yǔ)句        cursor.execute(sql)        # 提交到數(shù)據(jù)庫(kù)執(zhí)行        db.commit()         #注冊(cè)成功之后跳轉(zhuǎn)到登錄頁(yè)面        return render_template('login.html')     except:        #拋出錯(cuò)誤信息        traceback.print_exc()        # 如果發(fā)生錯(cuò)誤則回滾        db.rollback()        return '注冊(cè)失敗'    # 關(guān)閉數(shù)據(jù)庫(kù)連接    db.close()
#獲取登錄參數(shù)及處理@app.route('/login')def getLoginRequest():#查詢用戶名及密碼是否匹配及存在    #連接數(shù)據(jù)庫(kù),此前在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)TESTDB    db = pymysql.connect("localhost","root","123456","TESTDB" )    # 使用cursor()方法獲取操作游標(biāo)     cursor = db.cursor()    # SQL 查詢語(yǔ)句    sql = "select * from user where user="+request.args.get('user')+" and password="+request.args.get('password')+""    try:        # 執(zhí)行sql語(yǔ)句        cursor.execute(sql)        results = cursor.fetchall()        print(len(results))        if len(results)==1:            return '登錄成功'        else:            return '用戶名或密碼不正確'        # 提交到數(shù)據(jù)庫(kù)執(zhí)行        db.commit()    except:        # 如果發(fā)生錯(cuò)誤則回滾        traceback.print_exc()        db.rollback()    # 關(guān)閉數(shù)據(jù)庫(kù)連接    db.close()    #使用__name__ == '__main__'是 Python 的慣用法,確保直接執(zhí)行此腳本時(shí)才#啟動(dòng)服務(wù)器,若其他程序調(diào)用該腳本可能父級(jí)程序會(huì)啟動(dòng)不同的服務(wù)器if __name__ == '__main__':    app.run(debug=True)

此例僅僅是為完成python作為web服務(wù)器的流程,很多檢驗(yàn)控制就沒(méi)細(xì)細(xì)去做。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python+ajax+mysql簡(jiǎn)單前后端數(shù)據(jù)庫(kù)的搭建
python模塊之MySQLdb: 用python連接mysql數(shù)據(jù)庫(kù)
零基礎(chǔ)如何自學(xué)Python
Python中SQLite數(shù)據(jù)庫(kù)使用初步
Python操作mysql數(shù)據(jù)庫(kù):MySQLdb模塊
Python訪問(wèn)數(shù)據(jù)庫(kù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服