Flask实现注册登录模块

🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX

目录

  • 前言
  • 1. 登录模块
  • 2. 注册模块
  • 3. 前端界面
  • 4. 实现效果
  • 最后


前言

本期给大家带来,Flask+MySql+前端的注册登录模块实现

1. 登录模块

# 登录页面
@app.route('/login',methods=['GET','POST'])
def login():if request.method == 'GET':return render_template('login.html')elif request.method == 'POST':# 将输入的用户登录信息保存为字典request.form = dict(request.form)# 进行过滤,如果邮箱和密码都在数据库中,返回Truedef filter_fn(item):return request.form['email'] in item and request.form['password'] in itemusers = query.querys('select * from user',[],'select')filter_user = list(filter(filter_fn,users))# 验证成功,进入index.htmlif len(filter_user):session['email'] = request.form['email']return redirect('/home')else:return render_template('error.html', message='用户邮箱或密码输入错误')@app.route('/loginOut',methods=['GET','POST'])
def loginOut():session.clear()  # 清除session中存储的登录数据return redirect('/login')

2. 注册模块

# 注册页面
@app.route('/register',methods=['GET','POST'])
def register():if request.method == 'GET':return render_template('register.html')elif request.method == 'POST':request.form = dict(request.form)# 判断第一次输入密码和第二次是否相同if request.form['password'] != request.form['passwordChecked']:return render_template('error.html',message='两次输入密码不符,请重新输入')def filter_fn(item):return request.form['email'] in itemusers = query.querys('select * from user',[],'select')filter_list = list(filter(filter_fn, users))if len(filter_list):return render_template('error.html',message='该用户已被注册')else:# 将新注册的数据存储到数据库query.querys('insert into user(email,password) values(%s,%s)',[request.form['email'],request.form['password']])return redirect('/login')

3. 前端界面

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="description" content=""><meta name="author" content=""><title>大数据可视化平台-登陆页面</title><!--更改绝对路径--><link href="/static/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css"><link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet"><link href="/static/css/sb-admin-2.min.css" rel="stylesheet">
<style>.container h2 {text-align: center;margin-bottom: 20px;}.container h2 span{font-size: 50px;color: coral;margin-right: 10px;}</style></head><body class="bg-gradient-primary"><div class="container"><div class="row justify-content-center"><div class="col-xl-10 col-lg-12 col-md-9"><div class="card o-hidden border-0 shadow-lg my-5"><div class="card-body p-0"><div class="row"><div class="col-lg-6 d-none d-lg-block bg-login-image" style="background-image: url('/static/img/login.jpg')"></div><div class="col-lg-6"><div class="p-5"><div class="text-center"><h2><span>B</span>reeze Video</h2><form action="#" method="post"></div><form class="user" method="POST" action="/login"><div class="form-group"><input type="email" name="email" class="form-control form-control-user" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="用户名:admin or user"></div><div class="form-group"><input type="password" name="password" class="form-control form-control-user" id="exampleInputPassword" placeholder="密码:123456"></div><div class="form-group"><div class="custom-control custom-checkbox small"><input type="checkbox" class="custom-control-input" id="customCheck"><label class="custom-control-label" for="customCheck">记住我</label></div></div><button href="index.html" class="btn btn-primary btn-user btn-block">登录</button><hr><a href="index.html" class="btn btn-google btn-user btn-block"><i class="fab fa-google fa-fw"></i> Google账号登录</a><a href="index.html" class="btn btn-facebook btn-user btn-block"><i class="fab fa-facebook-f fa-fw"></i> Facebook账号登录</a></form><hr><div class="text-center"><a class="small" href="/register">注册新账号!</a></div></div></div></div></div></div></div></div>
</div></body></html>

4. 实现效果

在这里插入图片描述

最后

如果本文对你有所帮助,还请三连支持一下博主!
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/151843.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几道web题目

总结几道国庆写的web题目 [ACTF2020 新生赛]Include1 点进去发现就一个flag.php,源代码和抓包都没拿到好东西 结合题目猜是文件包含&#xff0c;构建payload ?filephp://filter/readconvert.base64-encode/resourceflag.php 得到base64编码过的flag&#xff0c;解码即可 此题…

Android---Class 对象在执行引擎中的初始化过程

一个 class 文件被加载到内存中的步骤如下图所示&#xff1a; 装载 装载是指 Java 虚拟机查找 .class 文件并生成字节流&#xff0c;然后根据字节流创建 java.lang.Class 对象的过程。 1. ClassLoader 通过一个类的全限定名&#xff08;包名类名&#xff09;来查找 .class 文件…

Linux多线程

文章目录 多线程多线程概念多线程优点多线程缺点线程和进程 Linux线程控制POSIX线程库线程的创建进程ID获取线程终止线程等待线程分离 总结 多线程 多线程概念 在Linux中&#xff0c;线程是进程内的执行单元。换句话说&#xff0c;线程是进程内部的子任务&#xff0c;它们共享…

入侵防御系统(IPS)网络安全设备介绍

入侵防御系统&#xff08;IPS&#xff09;网络安全设备介绍 1. IPS设备基础 IPS定义 IPS&#xff08;Intrusion Prevention System&#xff09;是一种网络安全设备或系统&#xff0c;用于监视、检测和阻止网络上的入侵尝试和恶意活动。它是网络安全架构中的重要组成部分&…

MyBatis中的ResultMap有什么作用

MyBatis是一款广泛使用的Java持久层框架&#xff0c;它简化了数据库访问和数据映射的工作。在MyBatis中&#xff0c;ResultMap是一个强大的工具&#xff0c;用于将数据库查询结果映射到Java对象上。本文将深入探讨MyBatis中的ResultMap&#xff0c;解释它的作用以及如何使用它来…

进程状态的理解

我们知道进程会有属于自己的PCB&#xff0c;便于操作系统的管理&#xff0c;而PCB结构体里面还有进程状态参数&#xff0c;类似于用一个变量标识对应的进程状态&#xff0c;就相当于将每个进程状态编号&#xff0c;而PCB中有一个变量存储当前进程状态所对应的编号&#xff0c;也…

解决WordPress升级后提示:无需升级,您的WordPress数据库已经是最新的了

问题描述 当升级了 WordPress 6.3 后&#xff0c;登录后台出现了提示&#xff1a;无需升级&#xff0c;您的WordPress 数据库已经是最新的了。并且无法进入后台了。 出现这个问题的原因可能是你网站开启了 Memcached 缓存。 如何验证是否开启了 Memcached 缓存&#xff1f;检…

php 安装mongodb扩展模块,rdkafka模块

mongodb mongodb扩展下载 选择php版本&#xff0c;根据报错提示&#xff0c;选择扩展对应的版本选择非安全进程将php_mongodb.dll放到php/ext目录下修改php.ini配置&#xff0c;添加extensionphp_mongodb.dll开启php_mongodb扩展&#xff0c;重启服务php -m 查看是否开启成功…

排序(order by)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select */列名 from 表名 order by 列名1 asc/desc, 列名2 asc/desc; 说明&#xff1a; 排序的目的&#xff1a;改变查询结果的返回顺序…

大数据软件项目的数据清洗

大数据软件项目中的数据清洗是数据预处理过程中的重要环节&#xff0c;用于识别和纠正数据集中的错误、不一致性和不完整性。虽然没有专门的"数据清洗开发框架"&#xff0c;但有许多工具和库可用于数据清洗任务。以下是一些常见的数据清洗工具和库&#xff0c;可以与…

win10 U盘安装教程

一年内&#xff0c;第三次重装电脑了&#xff0c;我必须要写一份教程了。从制作U盘开始&#xff0c;到重装系统&#xff0c;全部都记录一下&#xff0c;以备不时之需。 首先&#xff0c;找一个U盘&#xff0c;如果U盘内有需要文件&#xff0c;请自行备份&#xff0c;因为这个U盘…

JVM(Java虚拟机)

目录 1.JVM 简介 1.1 JVM 发展史 1.Sun Classic VM 2.Exact VM 3.HotSpot VM 4.JRockit 5.J9 JVM 6.Taobao JVM&#xff08;国产研发&#xff09; 1.2 JVM 和《Java虚拟机规范》 2. JVM 运行流程 JVM 执行流程 3. JVM 运行时数据区 3.1 堆&#xff08;线程共享&…

泛型的小结

文章目录 什么是泛型泛型的相关概念泛型的作用 泛型的使用泛型类语法泛型接口语法泛型方法语法泛型类的简单示例泛型接口的简单示例基于泛型的简单工厂方法泛型的上界与下界 泛型的一些使用建议 什么是泛型 从JDK1.5开始引入泛型&#xff08;generic&#xff09;语法。对类型实…

一文看懂光模块的工作原理

你们好&#xff0c;我的网工朋友 光模块有很多类别&#xff0c;是我们经常要用到的PHY层器件。虽然封装&#xff0c;速率&#xff0c;传输距离有所不同&#xff0c;但是其内部组成基本是一致的。 以太网交换机常用的光模块有SFP&#xff0c;GBIC&#xff0c;XFP&#xff0c;X…

【Linux】 rm命令使用

作为一个程序员 我们经常用到rm -rf * 或者rm -rf XXX 。但是rm -rf 是什么意思不是很清楚&#xff0c;咱们一起来学习一下吧。 rm&#xff08;英文全拼&#xff1a;remove&#xff09;命令用于删除一个文件或者目录。 rm 命令 -Linux手册页 著者 由保罗鲁宾、大卫麦肯齐、理…

10.8队列安排,最少找字典次数,表达式转换与计算模拟(栈、队列)

队列安排1160 灵活的插入与删除 用队列实现的话&#xff0c;就是双端队列&#xff0c; 第一阶段是要找到对应编号的同学&#xff0c;然后根据p的取值决定是怎么插入 第二阶段也是要找到对应编号同学&#xff0c;之后就删除&#xff0c;如果找不到就返回 思路是这个思路&…

为什么团队需要实时协作?该如何实现?

协作是任何组织成功的关键部分&#xff0c;通过明确定义的愿景和使命并基于透明度和持续沟通来执行。 实时的协作是指员工之间就不同的项目、任务、文件或文档进行同步、无缝的互动和协作&#xff0c;他们几乎不受任何地理边界的限制&#xff0c;即时沟通和分享反馈、想法和信…

【AI视野·今日Robot 机器人论文速览 第四十七期】Wed, 4 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 4 Oct 2023 Totally 40 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;基于神经网络的多模态触觉感知, classification, position, posture, and force of the grasped object多模态形象的解耦(f…

从零开始的C++(七)

1.malloc、free和new、delete的区别&#xff1a; 1、.malloc、free是函数&#xff0c;new、delete是运算符。 2、malloc不会调用构造函数&#xff0c;new可以调用构造函数。 3、malloc开辟失败返回NULL&#xff0c;new失败会捕捉异常。 4、malloc不会自动计算类型大小&…

好奇喵 | PT(Private Tracker)——什么是P2P,什么是BT,啥子是PT?

前言 有时候会听到别人谈论pt&#xff0c;好奇猫病又犯了&#xff0c;啥子是pt&#xff1f; PT——你有pt吗&#xff1f;啥是pt&#xff1f; 从BT开始 BitTorrent是一种点对点&#xff08;P2P&#xff09;文件共享协议&#xff0c;用于高速下载和上传大型文件。它允许用户通…