大家好,我是java1234_小锋老师,最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts)视频教程,持续更新中,计划月底更新完,感谢支持。今天讲解用户注册实现

视频在线地址:

2026版【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts+爬虫) 视频教程 (火爆连载更新中..)_哔哩哔哩_bilibili

课程简介:


本课程采用主流的Python技术栈实现,Mysql8数据库,Flask后端,Pandas数据分析,前端可视化图表采用echarts,以及requests库,snowNLP进行情感分析,词频统计,包括大量的数据统计及分析技巧。

实现了,用户登录,注册,爬取微博帖子和评论信息,进行了热词统计以及舆情分析,以及基于echarts实现了数据可视化,包括微博文章分析,微博IP分析,微博评论分析,微博舆情分析。最后也基于wordcloud库实现了词云图,包括微博内容词云图,微博评论词云图,微博评论用户词云图等功能。

用户注册实现

我们再来实现下注册功能。

首先提供下前端静态网页模版register.html,放到templates下

<!doctype html>
<html lang="en">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>用户注册</title><link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon"><link rel="stylesheet" href="/static/css/backend-plugin.min.css"><link rel="stylesheet" href="/static/css/backend.css">
</head>
<body class=" ">
<!-- loader Start -->
<div id="loading"><div id="loading-center"></div>
</div>
<!-- loader END --><div class="wrapper"><section class="login-content"><div class="container h-100"><div class="row align-items-center justify-content-center h-100"><div class="col-md-5"><div class="card p-3"><div class="card-body"><div class="auth-logo"><img src="/static/picture/logo.png" class="img-fluid  rounded-normal  darkmode-logo"alt="logo"><img src="/static/picture/logo-dark.png" class="img-fluid rounded-normal light-logo"alt="logo"></div><h3 class="mb-3 font-weight-bold text-center">用户注册</h3><div class="mb-5"><p class="line-around text-secondary mb-0"><spanclass="line-around-1">微博舆情分析管理系统</span></p></div><form><div class="row"><div class="col-lg-12"><div class="form-group"><label class="text-secondary">用户名:</label><input class="form-control" id="username" name="username" type="text"placeholder="请输入用户名..."></div></div><div class="col-lg-12 mt-2"><div class="form-group"><div class="d-flex justify-content-between align-items-center"><label class="text-secondary">密码:</label></div><input class="form-control" id="password" name="password" type="password"placeholder="请输入密码..."></div></div><div class="col-lg-12 mt-2"><div class="form-group"><div class="d-flex justify-content-between align-items-center"><label class="text-secondary">确认密码:</label></div><input class="form-control" id="password2" name="password2" type="password"placeholder="请输入确认密码..."></div></div></div><button type="button" onclick="submitForm()" class="btn btn-primary btn-block mt-2">登录</button><div class="col-lg-12 mt-3"><p class="mb-0 text-center"><font id="info" color="red"></font>&nbsp;&nbsp;已有账号?<ahref="/user/login">用户登录</a></p></div></form></div></div></div></div></div></section>
</div>
<script>function submitForm() {let username = $("#username").val()let password = $("#password").val()let password2 = $("#password2").val()if (username == "") {$("#info").text("用户名不能为空!")return false;}if (password == "") {$("#info").text("密码不能为空!")return false;}if (password2 == "") {$("#info").text("确认密码不能为空!")return false;}if (password != password2) {$("#info").text("确认密码不正确!")return false;}$.post('/user/register', {'username': username,'password': password,'password2': password2}, function (result) {if (result.error) {$("#info").text(result.info)} else {$("#info").text("注册成功!")}})}
</script>
<!-- Backend Bundle JavaScript -->
<script src="/static/js/backend-bundle.min.js"></script>
<!-- Chart Custom JavaScript -->
<script src="/static/js/customizer.js"></script><script src="/static/js/sidebar.js"></script><!-- Flextree Javascript-->
<script src="/static/js/flex-tree.min.js"></script>
<script src="/static/js/tree.js"></script><!-- Table Treeview JavaScript -->
<script src="/static/js/table-treeview.js"></script><!-- SweetAlert JavaScript -->
<script src="/static/js/sweetalert.js"></script><!-- Vectoe Map JavaScript -->
<script src="/static/js/vector-map-custom.js"></script><!-- Chart Custom JavaScript -->
<script src="/static/js/chart-custom.js"></script>
<script src="/static/js/01.js"></script>
<script src="/static/js/02.js"></script><!-- slider JavaScript -->
<script src="/static/js/slider.js"></script><!-- Emoji picker -->
<script src="/static/js/index.js" type="module"></script><!-- app JavaScript -->
<script src="/static/js/app.js"></script>
</body>
</html>

userDao.py里实现add()注册添加用户方法以及判断用户名是否重复的getByUserName()方法:

def add(user: User):"""注册添加用户:param user::return:"""con = Nonetry:con = dbUtil.getCon()cursor = con.cursor()cursor.execute(f"insert into t_user values(null,'{user.username}','{user.password}','{user.createtime}')")return cursor.fetchone()except Exception as e:print(e)con.rollback()return Nonefinally:dbUtil.closeCon(con)
def getByUserName(username):"""根据用户名查询用户信息:param username::return:"""con = Nonetry:con = dbUtil.getCon()cursor = con.cursor()sql = "SELECT username from t_user"if username != None and username != '':sql += f" where username='{username}'"print(sql)cursor.execute(sql)return cursor.rowcountexcept Exception as e:print(e)con.rollback()return Nonefinally:dbUtil.closeCon(con)

user.py里实现用户注册业务逻辑方法register()

@ub.route('/register', methods=['GET', 'POST'])
def register():"""用户注册:return:"""if request.method == 'GET':return render_template('register.html')else:username = request.values.get('username')password = request.values.get('password')password2 = request.values.get('password2')if username is None or username.strip() == '':return jsonify(error=True, info='用户名不能为空!')if password is None or password.strip() == '':return jsonify(error=True, info='密码不能为空!')if password2 is None or password2.strip() == '':return jsonify(error=True, info='确认密码不能为空!')if password != password2:return jsonify(error=True, info='确认密码不正确!')# 检查用户名重复if len(userDao.getByUserName(username)):return jsonify(error=True, info='该用户名已存在!')else:user = User(username, MD5Utility.encrypt(password))user.createtime = datetime.now()if userDao.add(user) > 0:return jsonify(success=True, info='OK')else:return jsonify(error=True, info='注册失败,请联系管理员!')

运行测试:

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

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

相关文章

华为7月23日机考真题

&#x1f4cc; 点击直达笔试专栏 &#x1f449;《大厂笔试突围》 &#x1f4bb; 春秋招笔试突围在线OJ 笔试突围OJ](bishipass.com) 03. 山峰观测站数据分析 问题描述 LYA是一名地理数据分析师&#xff0c;负责分析山峰观测站收集的海拔高度数据。观测站在一条直线上设置了…

图像分析学习笔记(4):机器学习图像特征与描述

图像分析学习笔记&#xff08;4&#xff09;&#xff1a;机器学习图像特征与描述深度学习基础深度学习技巧深度模型构建深度学习基础 深度学习概念&#xff1a;深度学习是机器学习的一个分支&#xff0c;它基于一系列算法&#xff0c;试图通过使用多个处理层建立数据的高级抽象…

锁付机器人,如何精准锁附革新新能源锂电装配效率

其实呢&#xff0c;随着科技的不断发展&#xff0c;新能源电池、智能制造、精密装配、工艺升级以及工业自动化这些领域都在飞速前进。新能源行业如今可是炙手可热&#xff0c;中国新能源行业进入快速发展阶段&#xff0c;就像一列高速行驶的火车&#xff0c;势不可挡。在这个过…

Vue项目开发注意事项(包含node/npm/cnpm等)

事项一&#xff1a;项目代码放在本地怎么运行起来 1、首先确定项目对应的node和npm版本 node下载地址 Index of /dist/https://nodejs.org/dist/ node 与 npm版本对应关系 Node.js — Node.js Releases 2、node卸载的时候&#xff0c;会自动把对应的npm卸载掉 情况1&…

GitHub:只支持 Git 作为唯一的版本库格式进行托管

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

秋招Day17 - Spring - MVC

Spring MVC有哪些核心组件&#xff1f;DispatcherServlet&#xff1a;前端控制器&#xff0c;所有HTTP请求首先经过它&#xff0c;分发请求到正确的处理器&#xff0c;并与其他组件协调。HandlerMapping&#xff1a;维护URL和处理器的映射关系Handler&#xff1a;处理器&#x…

使用mybatis实现模糊查询和精准查询切换的功能

1、首先在前端页面添加勾选框&#xff08;name设置为check&#xff09;2、mybatis代码当check勾选时&#xff0c;check不为null&#xff0c;走模糊查询like当check未勾选时&#xff0c;check为null&#xff0c;走精准查询 <if test"check ! null and check ! "&g…

Android模块化实现方案深度分析

模块化是现代 Android 开发应对项目复杂度激增、团队协作效率、编译速度瓶颈、功能复用与动态化等挑战的核心架构思想。其核心目标是高内聚、低耦合、可插拔、易维护。 一、模块化的核心价值与目标 降低复杂度&#xff1a; 将庞大单体应用拆分为独立、职责清晰的模块。加速编译…

网络基础16--VRRP技术

一、VRRP核心概念定义虚拟路由器冗余协议&#xff08;VRRP&#xff0c;Virtual Router Redundancy Protocol&#xff09;&#xff0c;可以将多个路由器加入到备份组中&#xff0c;形成一台虚拟路由器&#xff0c;承担网关功能。RFC 3768标准定义的VRRP是一种容错协议&#xff0…

最长公共前缀-leetcode

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“racecar”,…

vs2022:C++安装opencv

vs2022:C安装opencv https://opencv.org/releases/ 1.配置包含目录 2.配置库目录 3.配置连接器 4.配置环境变量 5.重新启动VS2015/VS2017 6.测试 1.配置包含目录 (头文件) 2.配置库目录&#xff08;dll存放的库目录&#xff09; 3.配置连接器(库) 4.配置环境变量 5.重新启动VS…

智联智造:国内新能源汽车品牌AGV小车无线控制系统创新实践

行业背景&#xff1a;智能制造浪潮下的通信刚需 在全球制造业智能化转型浪潮中&#xff0c;工业4.0技术已成为提升生产效率与产品质量的核心驱动力。国内某新能源汽车品牌作为智能制造的标杆企业&#xff0c;积极投身自动化设备与智能生产系统的革新。其中&#xff0c;无线控制…

QT6 源,七章对话框与多窗体(8) 消息对话框 QMessageBox :属性,信号函数,成员函数,以及静态成员函数,源代码带注释

&#xff08;1&#xff09;消息对话框里&#xff0c;分为通知消息&#xff0c;询问消息&#xff0c;提醒消息&#xff0c;错误消息。可以直接使用本类的静态函数&#xff0c;简单。但 QT 的官方说明里&#xff0c;建议使用动态成员函数组件的消息框&#xff0c;而非使用静态函数…

DAY 7|算法篇——栈与队列(及重温数组篇章有感)

今天本来应该写两道题把这一章节结束掉&#xff0c;奈何第二题前k个高频元素需要用的二叉树相关代码实在不会写&#xff08;倒是能看懂&#xff09;等我学完二叉树再把这道题亲自写一遍吧 今天工作量比较小&#xff0c;准备从第一天的任务开始把题目重新再做一遍 239. 滑动窗…

go语言基础与进阶

&#x1f680; Go语言终极高手之路&#xff1a;从基础到架构的终极指南 Go语言&#xff0c;以其简洁的语法、卓越的性能和原生的并发模型&#xff0c;席卷了云原生和后端开发领域。然而&#xff0c;要真正驾驭Go&#xff0c;仅仅停留在会写if-else和for循环是远远不够的。真正的…

Oracle数据恢复—Oracle数据库所在分区被删除后报错的数据恢复案例

Oracle数据库数据恢复环境&故障&#xff1a; 一台服务器上一个分区存放Oracle数据库数据。由于管理员误操作不小心删除了该分区&#xff0c;数据库报错&#xff0c;无法使用。 北亚企安数据恢复工程师到达现场后&#xff0c;将故障服务器中所有硬盘以只读方式进行完整镜像。…

Prometheus+altermanager搭配钉钉报警

一、Prometheus介绍 Prometheus是一个开源系统监控和警报工具包&#xff0c;最初在 SoundCloud构建。自 2012 年成立以来&#xff0c;许多公司和组织都采用了 Prometheus&#xff0c;该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目&#xff0c;独立于任何…

【小白量化智能体】应用6:根据通达信指标等生成机器学习Python程序

【小白量化智能体】应用6&#xff1a;根据通达信指标等生成机器学习Python程序 【小白量化智能体】是指能够自主或半自主地通过与环境的交互来实现目标或任务的计算实体。智能体技术是一个百科全书&#xff0c;又融合了人工智能、计算机科学、心理学和经济学等多个领域的知识&a…

k8s的calico无法启动报错解决

报错信息[INFO][1] main.go 138: Failed to initialize datastore errorGet "https://10.245.0.1:443/apis/crd.projectcalico.org/v1/clusterinformations/default": dial tcp 10.245.0.1:443: connect: no route to host 2025-07-21 06:15:42.055 [FATAL][1] main.…

MySQL多表查询中的笛卡尔积问题

精选专栏链接 &#x1f517; MySQL技术笔记专栏Redis技术笔记专栏大模型搭建专栏Python学习笔记专栏深度学习算法专栏 欢迎订阅&#xff0c;点赞&#xff0b;关注&#xff0c;每日精进1%&#xff0c;与百万开发者共攀技术珠峰 更多内容持续更新中&#xff01;希望能给大家带来…