flask 在网页表单写账号和密码 数据库校验,存在的话 弹欢迎页,不存在的话 添加到数据库,也弹欢迎页
去掉了注册signup.html页,因为是最简单的一个工程,不验证账号的唯一性
/**创建flask数据库**/ CREATE DATABASE flask CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; /**创建用户表**/ CREATE TABLE `flask`.`user` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'id' PRIMARY KEY, `name` VARCHAR(50) NOT NULL COMMENT '姓名', `psw` VARCHAR(20) NOT NULL COMMENT '密码' ); /**插入数据**/ INSERT INTO `flask`.`user` (`id`, `user`, `psw`) VALUES ('1', 'dou1', '123'); INSERT INTO `flask`.`user` ( `user`, `psw`) VALUES ( 'dou2', '2'); /**查询表**/ select * from `flask`.`user` where id>4; /**删除表 **/ delete from `flask`.`user` where id>4
#app.py from flask import * from mysql_con import Mysql # 实例化 app=Flask(__name__) # 定义路由 @ app.route('/') def index(): return render_template('login.html') @ app.route('/login', methods=["post","GET"]) def login(): if request.method == 'POST': # request.from.get()获得表单提交的数据 user = request.form.get("user") print(user) psw = request.form.get("psw") print(psw) # 调数据库 将用户和密码传入,如果有返回结果 跳转到欢迎页 没有结果跳转到注册页面 # 实例化mysql_con.py中的类Mysql mysql = Mysql() print('数据库里包含表单提交的吗',mysql.query_flask_login(user,psw)) if mysql.query_flask_login(user,psw): # 数据库有的话,直接欢迎页 return render_template('welcom.html') else: mysql.noQueryFlask(user,psw) # 数据库没有有的话,直接数据库添加一条数据,欢迎页 return render_template('welcom.html') else: return render_template('404.html') if __name__ == '__main__': app.run(debug=True)
# mysql_con.py #引入相关的库 import pymysql class Mysql: def __init__(self, host= "localhost", user= "root", pwd= "111111", db= "flask"): self.host=host self.user=user self.pwd=pwd self.db=db def getConnect(self): ''' 得到连接信息 :return: conn.cursor() 连接的游标 ''' if not self.db: raise (NameError,"没有设置数据库信息") # 异常提醒 # 连接操作:编码格式的指定,默认返回数据类型的指定 self.conn = pymysql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="utf8", ) # 创建游标 cur = self.conn.cursor(pymysql.cursors.DictCursor) # 不加参数时 返回元祖套元祖格式 # 传入pymysql.cursors.DictCursor参数 返回 列表中包含字典的格式 if not cur: raise (NameError,"数据库连接失败") else: # print("数据库连接成功“) return cur def query(self,sql): ''' 执行查询语句 返回 元祖 :param sql_select: :return: ''' cur=self.getConnect() cur.execute(sql) # 执行语句 result = cur.fetchall() #获得结果 ((1, 'dou1', '123'),) # result = cur.description # 获得结果 (('id', 8, None, 20, 20, 0, False), # ('user', 253, None, 50, 50, 0, True), # ('psw', 253, None, 20, 20, 0, True)) # 查询完毕关闭连接 self.conn.close() return result def query_flask_login(self,user,psw): cur = self.getConnect() # isfind =True 有这个账号 isfind=False # 如果发现了 返回真 否则返回假 sql = f"select * from user where user='{user}' and psw='{psw}'" cur.execute(sql) # 执行语句 result = cur.fetchall() # 获得结果 ((1, 'dou1', '123'),) self.conn.close() if result==(): return False else: print(result) return True def noQueryFlask(self,user,psw): cur = self.getConnect() sql=f"INSERT INTO `flask`.`user` ( `user`, `psw`) VALUES ( '{user}', '{psw}');" cur.execute(sql) # 执行语句 self.conn.commit() # 修改需要提交 # 查询完毕关闭连接 self.conn.close() def noQuery(self,sql): ''' 执行非查询语句 增删改 再调用查询方法 返回 结果 :param sql :return: ''' cur=self.getConnect() cur.execute(sql) # 执行语句 self.conn.commit()# 修改需要提交 # 查询完毕关闭连接 self.conn.close() if __name__ == '__main__': mysql=Mysql() # 查询 # res_flask_login=mysql.query_flask_login('dou', '123') # print(res_flask_login) # 添加 res_flask_signup = mysql.noQueryFlask('dou4',4) # 查询 res_qu=mysql.query("select * from `flask`.`user`") print(res_qu)
login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <div style="text-align: center"> <h2>登录</h2> <form action="/login" method="post"> <div><input placeholder="请输入用户名" type="text" name="user"></div> <div><input placeholder="请输入密码"type="password" name="psw"></div> <button type="submit" >登录</button> </form> </div> </body> </html>
填写内容后,点击登录,跳转到欢迎页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 登录成功 欢迎进入主页 </body> </html>
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律