亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn)

 更新時(shí)間:2021年05月13日 11:52:38   作者:林家小豬  
一個(gè)簡(jiǎn)單的用戶注冊(cè)和登錄的頁(yè)面,涉及到驗(yàn)證,數(shù)據(jù)庫(kù)存儲(chǔ)等等,本文主要介紹了Flask登錄注冊(cè)項(xiàng)目的簡(jiǎn)單實(shí)現(xiàn),從目錄結(jié)構(gòu)開始,感興趣的可以了解一下

本文主要介紹了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之字典添加元素的幾種方法

    Python之字典添加元素的幾種方法

    這篇文章主要介紹了Python之字典添加元素的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Jetson?NX?配置?pytorch的問題及解決方法

    Jetson?NX?配置?pytorch的問題及解決方法

    這篇文章主要介紹了Jetson?NX?配置?pytorch的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 詳解用python -m http.server搭一個(gè)簡(jiǎn)易的本地局域網(wǎng)

    詳解用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-09
  • 如何將python代碼生成API接口

    如何將python代碼生成API接口

    這篇文章主要介紹了如何將python代碼生成API接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Python虛擬環(huán)境virtualenv安裝的詳細(xì)教程保姆級(jí)(Windows和linux)

    Python虛擬環(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ī)制

    這篇文章主要介紹了分析用Python腳本關(guān)閉文件操作的機(jī)制,作者分Python2.x版本和3.x版本兩種情況進(jìn)行了闡述,需要的朋友可以參考下
    2015-06-06
  • 如何使用Python讀取.xlsx指定行列

    如何使用Python讀取.xlsx指定行列

    讀取xlsx的整列數(shù)據(jù)很容易,但是要讀取指定sheet的指定列,這個(gè)相信大多數(shù)程序員都不會(huì),下面這篇文章主要給大家介紹了關(guān)于如何使用Python讀取.xlsx指定行列的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • appium測(cè)試之APP元素定位及基本工具介紹

    appium測(cè)試之APP元素定位及基本工具介紹

    看了我文章了相信都了解了web端的元素定位了,沒看的,既然進(jìn)來了那么肯定多多少少知道些,本文主要來介紹APP的元素定位有哪些定位方式,我們又怎么去連接APP,然后通過工具去獲取元素
    2021-09-09
  • python自動(dòng)重試第三方包retrying模塊的方法

    python自動(dòng)重試第三方包retrying模塊的方法

    retrying是一個(gè)python的重試包,可以用來自動(dòng)重試一些可能運(yùn)行失敗的程序段。這篇文章主要介紹了python自動(dòng)重試第三方包retrying的方法,需要的朋友參考下吧
    2018-04-04
  • python獲取100以內(nèi)的質(zhì)數(shù)3種方式總結(jié)

    python獲取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

最新評(píng)論