(升级)Python+Flask+pymysql实现简单的登录注册

前言

基于上期内容,入门简单的登录界面。链接如下:

flask实现简单的登录界面

本期主要加入mysql进行一个数据库的交互操作,实现账户密码的验证。废话不多说进入正题

一、环境准备

1.下载MySQL

下载MySQL在官网进行下载,这里不过多叙述,主要是配置root账户密码用于连接,这里提供一个数据库管理工具DBserver

2.Conda环境

下载pymsql安装包

conda install pymysql

如果没有conda环境,下载对应python版本后使用pip命令进行安装

pip install pymysql

其它环境参考上一篇文章

二、目录结构

templates存放网页的模板

static存放静态资源

demo.py是主程序入口

tools存放工具测试类

三、模板代码

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主页</title>
</head>
<body>
    <h1>这是主页</h1>
    <a href="/l">前往登录</a>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="/login" method="post">
    <p>用户名:<input type="text" name="Username"></p>
    <p>密码:<input type="password" name="Passwd"></p>
    <input type="submit" value="登录">
</form>
</body>
</html>

register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
<form action="/register" method="post">
    <p>用户名:<input type="text" name="Username"></p>
    <p>密码:<input type="password" name="Passwd"></p>
    <input type="submit" value="注册">
</form>
</body>
</html>

welcome.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>欢迎</title>
</head>
<body>
<h1>欢迎{{username}}</h1>
<a href="/logout">登出</a>
</body>
</html>

四、后端实现

demo.py

#引入包
from flask import Flask,request,session,render_template,redirect,url_for
import pymysql

#数据库链接函数
#查询操作
def Connect_db_select(username,passwd):
    try:
        #连接对象
        db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
        #创建sql查询语句
        sql="select * from t_user where username='"+username+"'"+" and passwd='"+passwd+"'"
        cursor=db.cursor()
        cursor.execute(sql)
        result=cursor.fetchall()
        if len(result)>0:
            print("success")
            db.close()
            return True
    except:
        print("error")
        return False
#插入操作
def Connect_db_insert(username,passwd):
    try:
        #连接对象
        db = pymysql.connect(host='localhost', user='root', passwd='root', database="test_db", port=3306)
        #创建sql查询语句
        sql="insert into t_user (username,passwd) values('"+username+"','"+passwd+"')"
        cursor=db.cursor()
        cursor.execute(sql)
        db.commit()
        if cursor.rowcount>0:
            print("success")
            db.close()
            return True
    except:
        print("error")
        return False
#创建对象
app=Flask(__name__)
app.secret_key="zqh"
#定义主画面
@app.route("/")
def index():
    return render_template("index.html")
#定义登录界面
@app.route("/l")
def lo():
    return render_template("login.html")
#定义注册界面
@app.route("/r")
def re():
    return render_template("register.html")
#处理登录请求
@app.route("/login",methods=["POST","GET"])
def login():
    #get请求重定向要home页面
    if request.method=="GET":
        # 如果有直接进入主页
        if session.get("Username"):
            return render_template("welcome.html", username=session["Username"])
        #session没有就返回登录
        else:
            return redirect(url_for("lo"))
    #post请求处理form表单
    else:
        #输入的不是空的用户名或空的密码
        Username=request.form["Username"]
        Passwd=request.form["Passwd"]
        if Username!="" and Passwd!="":
            #进行用户名和数据的验证
            if Connect_db_select(Username,Passwd):
                session["Username"] = Username
                return render_template("welcome.html", username=session["Username"])
            #否则进行注册
            else:
                return redirect(url_for("re"))
        #否则重新进行登录
        else:
            return redirect(url_for("lo"))

#处理注册请求
@app.route("/register",methods=["POST","GET"])
def register():
    # get请求重定向要home页面
    if request.method == "GET":

        # 如果有直接进入主页
        if session.get("Username"):
            return render_template("welcome.html", username=session["Username"])

        # session没有就返回注册
        else:
            return redirect(url_for("re"))
    # post请求处理form表单
    else:
        #输入的不是空的用户名或空的密码
        Username=request.form["Username"]
        Passwd=request.form["Passwd"]
        if Username!="" and Passwd!="":
            #进行用户名和数据的验证
            if Connect_db_insert(Username,Passwd):
                session["Username"] = Username
                return render_template("welcome.html", username=session["Username"])
            # 否则重新注册
            else:
                return redirect(url_for("re"))
        # 否则重新注册
        else:
            return redirect(url_for("re"))
#处理登出
@app.route("/logout")
def logout():
    session.pop("Username",None)
    return redirect(url_for("index"))
if __name__=="__main__":
    app.run(debug=True)

五、总结

主要是进行了一个和数据库交互的操作,并通过flask展示在网页上。

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值