Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn)
本文主要介紹了Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn),分享給大家,具體如下:
目錄結(jié)構(gòu)
配置文件設(shè)計(jì)
/templates/config.py
#數(shù)據(jù)庫(kù)連接配置 import pymysql conn = pymysql.connect( host='192.XXX.XXX.XX', port=320xx, user='root', password='123456', database='test_XX' )
首頁(yè)/templates/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> {# <link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}" rel="external nofollow" rel="external nofollow" >#} <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="/static/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <title>林家小豬測(cè)試小站</title> </head> <body> <div> <h1>您好,{{ username }},歡迎來到我的小站</h1> <a href="{{ url_for('user_login') }}" rel="external nofollow" rel="external nofollow" >退出</a> <br/> </div> </body> </html>
登錄頁(yè)面/templates/login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="/static/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > {# <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}" rel="external nofollow" rel="external nofollow" type="text/css">#} <title>登錄</title> </head> <body> <div> <h1>用戶登錄</h1> <!--將登陸信息放到一個(gè)form中--> <form method="POST"> <input type="text" name="username" placeholder="請(qǐng)輸入用戶名" /> <br/> <input type="password" name="password" placeholder="請(qǐng)輸入密碼(小于12位)" /> <br/> <!--jinja2的函數(shù)--> {% if message %} {{message}} {% endif %} <br/> <input type="submit" value="登錄" /> <input type="reset" value="重置" /> <!--跳轉(zhuǎn)到register的頁(yè)面--> <a href="{{ url_for('register') }}" rel="external nofollow" >注冊(cè)</a> </form> </div> </body> </html>
注冊(cè)頁(yè)面/templates/register.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" type="text/css" href="/static/style.css" rel="external nofollow" rel="external nofollow" rel="external nofollow" > <title>注冊(cè)</title> </head> <body> <div> <h1>用戶注冊(cè)</h1> <form method="POST"> <input type="text" name="username" placeholder="請(qǐng)輸入用戶名" /> <br/> <input type="password" name="password" placeholder="請(qǐng)輸入密碼(小于12位)" /> <br/> <!--jinja2的函數(shù)--> {% if message %} {{message}} {% endif %} <br/> <input type="submit" value="注冊(cè)" /> <input type="reset" value="重置" /> <a href="{{ url_for('user_login') }}" rel="external nofollow" rel="external nofollow" >登錄</a> </form> </div> </body> </html>
登錄校驗(yàn) /model/check_login.py
from templates.config import conn cur = conn.cursor() def is_null(username,password): if(username==''or password==''): return True else: return False def is_existed(username,password): sql="SELECT * FROM user WHERE username ='%s' and password ='%s'" %(username,password) cur.execute(sql) result = cur.fetchall() if (len(result) == 0): return False else: return True def exist_user(username): sql = "SELECT * FROM user WHERE username ='%s'" % (username) cur.execute(sql) result = cur.fetchall() if (len(result) == 0): return False else: return True
注冊(cè)校驗(yàn) /model/regist_login.py
from templates.config import conn cur = conn.cursor() def add_user(username, password): # sql commands sql = "INSERT INTO user(username, password) VALUES ('%s','%s')" %(username, password) # execute(sql) cur.execute(sql) # commit conn.commit() # 對(duì)數(shù)據(jù)庫(kù)內(nèi)容有改變,需要commit() conn.close()
最后編輯運(yùn)行文件
app.py
from flask import Flask,render_template from flask import redirect from flask import url_for from flask import request from model.check_login import is_existed,exist_user,is_null from model.check_regist import add_user app = Flask(__name__) @app.route('/') def index(): return redirect( url_for('user_login') ) @app.route('/user_login',methods=['GET','POST']) def user_login(): if request.method=='POST': # 注冊(cè)發(fā)送的請(qǐng)求為POST請(qǐng)求 username = request.form['username'] password = request.form['password'] if is_null(username,password): login_massage = "溫馨提示:賬號(hào)和密碼是必填" return render_template('login.html', message=login_massage) elif is_existed(username, password): return render_template('index.html', username=username) elif exist_user(username): login_massage = "提示:密碼錯(cuò)誤,請(qǐng)輸入正確密碼" return render_template('login.html', message=login_massage) else: login_massage = "不存在該用戶" return render_template('login.html', message=login_massage) return render_template('login.html') @app.route("/regiser",methods=["GET", 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] if is_null(username,password): login_massage = "溫馨提示:賬號(hào)和密碼是必填" return render_template('register.html', message=login_massage) elif exist_user(username): return redirect(url_for('user_login')) else: add_user(request.form['username'], request.form['password'] ) return render_template('index.html', username=username) return render_template('register.html') if __name__=="__main__": app.run()
到此這篇關(guān)于Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Flask登錄注冊(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解用python -m http.server搭一個(gè)簡(jiǎn)易的本地局域網(wǎng)
這篇文章主要介紹了詳解用python -m http.server搭一個(gè)簡(jiǎn)易的本地局域網(wǎng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(jí)(Windows和linux)
本文詳細(xì)介紹了如何在Linux和Windows系統(tǒng)上安裝和配置virtualenv虛擬環(huán)境,包括依賴包安裝、系統(tǒng)環(huán)境變量設(shè)置、激活和退出環(huán)境,以及在PyCharm中的應(yīng)用和導(dǎo)出依賴文件,需要的朋友可以參考下2024-09-09分析用Python腳本關(guān)閉文件操作的機(jī)制
這篇文章主要介紹了分析用Python腳本關(guān)閉文件操作的機(jī)制,作者分Python2.x版本和3.x版本兩種情況進(jìn)行了闡述,需要的朋友可以參考下2015-06-06python自動(dòng)重試第三方包retrying模塊的方法
retrying是一個(gè)python的重試包,可以用來自動(dòng)重試一些可能運(yùn)行失敗的程序段。這篇文章主要介紹了python自動(dòng)重試第三方包retrying的方法,需要的朋友參考下吧2018-04-04python獲取100以內(nèi)的質(zhì)數(shù)3種方式總結(jié)
質(zhì)數(shù)也稱為質(zhì)數(shù),具有無限個(gè),質(zhì)數(shù)定義為大于1的自然數(shù),除了1和它本省外沒有其他因數(shù)的數(shù)稱為質(zhì)數(shù),這篇文章主要給大家介紹了關(guān)于python獲取100以內(nèi)質(zhì)數(shù)的3種方式,需要的朋友可以參考下2024-08-08