提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Flask学习笔记(九)
flask框架使用mysql实现用户注册登录系统
通过前端(index.html,regist.html)和后端部分运行程序默认进入登录界面通过输入注册部分的路由进行注册
前端部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h1>登录</h1>
<form method="post">
<input type="text" name="user" >
<input type="password" name="pwd" >
<input type="submit" name="登录">{{msg}}
</form>
</body>
</html>
导入扩展:
import pymysql
from flask import Flask
from flask import render_template
from flask import request
import traceback
import win32api,win32con
登录注册部分路由的设置
@app.route('/')//默认登录界面
def login():
return render_template('login.html')
@app.route('/regist')//访问注册
def regist():
return render_template('regist.html')
@app.route('/registuser')//获取注册信息储存到数据库里
def getRigistRequest():
连接数据库导入提前创建的数据库demo
db = pymysql.connect(host="localhost", user="root", password="20220821", database="demo",charset="utf8")
使用cursor()方法获取操作游标
cursor = db.cursor()
获取输入内容
username=request.args.get('user')
password=request.args.get('password')
password2=request.args.get('password2')
print(password)
print(password2)
通过对比pw是否等于pw2判断注册密码是否可行并导入数据库
if password==password2:
sql = "INSERT INTO user(user, password) VALUES ("+username+", "+password+")"
try:
# 执行sql语句
cursor.execute(sql)
db.commit()
#注册成功之后跳转到登录页面
return render_template('login.html')
except:
#抛出错误信息
traceback.print_exc()
# 如果发生错误则回滚
db.rollback()
return '注册失败'
# 关闭数据库连接
db.close()
两次密码输入错误后
else:
win32api.MessageBox(0,"两次输入密码不一致","提醒",win32con.MB_ICONWARNING)
return render_template('regist.html')//返回注册页面
登录部分 # 连接数据库,此前在数据库中创建数据库test查询是否存在
@app.route('/login')
def login():
db = pymysql.connect(host="localhost", user="root", password="20220821", database="flask",charset="utf8")
使用cursor()方法获取操作游标后通过select()查询语句
cursor = db.cursor()
sql = "select * from user where user=" + request.args.get('user') + " and password=" + request.args.get(
'password') + ""
try:
cursor.execute(sql)
results = cursor.fetchall()
print(len(results))
if len(results) == 1:
return '登录成功'
else:
return '用户名或密码不正确'
db.commit()
except:
traceback.print_exc()
db.rollback()
db.close()
if __name__ == '__main__':
app.run(debug=True)