当前位置: 首页 > news >正文

web笔记

<form method="POST" action="{{ url_for('register') }}"><label for="username">用户名:</label><input type="text" id="username" name="username" required><br><label for="password">密码:</label><input type="password" id="password" name="password" required><br><label for="confirm_password">确认密码:</label><input type="password" id="confirm_password" name="confirm_password" required><br><button type="submit">注册</button>
</form>

required 是HTML5引入的属性,表示该输入字段为必填项

<br> 是 HTML 中的一个标签,用来创建换行

  • id 用于前端定位元素,通常在 CSS 和 JavaScript 中使用。
  • name 用于后端接收表单数据,后端通过 name 来获取提交的表单值。

Flask接收前端的数据

@app.route('/register', methods=['GET', 'POST'])
def register():if request.method == 'POST':username = request.form['username']password = request.form['password']confirm_password = request.form['confirm_password']

Flask把数据发送给前端

@app.route('/')
def index():# 传递数据到前端data = {'title': 'Flask 示例','user': '小明','items': ['苹果', '香蕉', '橙子']}return render_template('index.html', data=data)
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>{{ data.title }}</title>
</head>
<body><h1>欢迎, {{ data.user }}</h1><ul>{% for item in data.items %}<li>{{ item }}</li>{% endfor %}</ul>
</body>
</html>

微信小程序前端传递给flask

JS文件

wx.request({url: 'http://your_flask_server/submit', // Flask后端地址method: 'POST',data: {key: 'value', // 要提交的数据},success: function (res) {console.log('提交成功', res.data);},fail: function (err) {console.error('提交失败', err);}
});

reswx.request 方法的回调函数中接收到的响应对象

通常包括以下几个部分:

  • data: 后端返回的实际数据内容。
  • statusCode: HTTP 状态码(如 200 表示成功)。
  • header: 返回的响应头信息。

flask代码

from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/submit', methods=['POST'])
def submit():data = request.json  # 获取提交的数据# 处理数据return jsonify({'status': 'success', 'data': data})if __name__ == '__main__':app.run(debug=True)

微信小程序前后端注册操作

wx.request({url: 'http://your_flask_server/register', // Flask后端地址method: 'POST',data: {username: this.data.username,password: this.data.password,},success: function (res) {if (res.data.status === 'success') {wx.showToast({title: '注册成功',});} else {wx.showToast({title: '注册失败',icon: 'none',});}},fail: function (err) {wx.showToast({title: '请求失败',icon: 'none',});}
});

flask后端

from flask import Flask, request, jsonify
import pymysqlapp = Flask(__name__)# 数据库连接
def connect_db():return pymysql.connect(host='localhost', user='root', password='123456', database='hukehan', charset='utf8mb4')@app.route('/register', methods=['POST'])
def register():data = request.jsonusername = data.get('username')password = data.get('password')# 数据库操作conn = connect_db()cursor = conn.cursor()try:cursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password))conn.commit()return jsonify({'status': 'success'})except Exception as e:conn.rollback()return jsonify({'status': 'error', 'message': str(e)})finally:cursor.close()conn.close()if __name__ == '__main__':app.run(debug=True)

cursor = conn.cursor() 是在数据库连接中创建一个游标对象(cursor)。游标用于执行 SQL 查询和获取结果。

小程序登陆的前后端

wx.request({url: 'http://your_flask_server/login', // Flask后端地址method: 'POST',data: {username: this.data.username,password: this.data.password,},success: function (res) {if (res.data.status === 'success') {wx.showToast({title: '登录成功',});// 跳转到首页或其他页面wx.redirectTo({url: '/pages/home/home' // 修改为目标页面路径});} else {wx.showToast({title: '登录失败',icon: 'none',});}},fail: function (err) {wx.showToast({title: '请求失败',icon: 'none',});}
});
from flask import Flask, request, jsonify, session
import pymysqlapp = Flask(__name__)
app.secret_key = 'your_secret_key'  # 设置 session 密钥def connect_db():return pymysql.connect(host='localhost', user='root', password='123456', database='hukehan', charset='utf8mb4')@app.route('/login', methods=['POST'])
def login():data = request.jsonusername = data.get('username')password = data.get('password')conn = connect_db()cursor = conn.cursor()try:cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (username, password))user = cursor.fetchone()if user:session['username'] = user[1]  # 假设 username 是第二列return jsonify({'status': 'success'})else:return jsonify({'status': 'error', 'message': '用户名或密码错误'})except Exception as e:return jsonify({'status': 'error', 'message': str(e)})finally:cursor.close()conn.close()if __name__ == '__main__':app.run(debug=True)

user = cursor.fetchone() 是从数据库查询结果中获取一条记录

如果没有更多的行可返回,fetchone() 会返回 None

(1, 'username', 'password')  # 假设用户表的字段为 id, username, password

跳转的个人信息页面

@app.route('/profile', methods=['GET'])
def profile():if 'username' in session:return jsonify({'status': 'success', 'username': session['username']})else:return jsonify({'status': 'error', 'message': '未登录'})

微信小程序的登陆案例==================================

from flask import Flask, request, jsonifyapp = Flask(__name__)@app.route('/login', methods=['POST'])
def login():# 通过 request.json 来获取 JSON 格式的数据data = request.get_json()username = data.get('username')password = data.get('password')# 假设这里进行一些简单的验证,实际中应使用更安全的验证方式if username == '1' and password == '1':return jsonify({'message': '登录成功', 'status': 'success'})else:return jsonify({'message': '登录失败', 'status': 'fail'}), 401if __name__ == '__main__':app.run()

js

Page({data: {username: '',password: ''},onUsernameInput: function(e) {this.setData({username: e.detail.value});},onPasswordInput: function(e) {this.setData({password: e.detail.value});},login: function() {const { username, password } = this.data;if (!username ||!password) {wx.showToast({title: '请输入账号和密码',icon: 'none'});return;}wx.request({url: 'http://127.0.0.1:5000/login',method: 'POST',data: {username,password},success: function(res) {if (res.statusCode === 200) {// 获取后端返回的数据const data = res.data;wx.showToast({title: data.message,icon: data.status === 'success'? 'success' : 'none'});if (data.status === 'success') {// 可以在这里进行登录成功后的页面跳转等操作}} else {wx.showToast({title: '登录失败',icon: 'none'});}},fail: function(err) {wx.showToast({title: '网络错误',icon: 'none'});console.error(err);}});}
});

css

/* 样式文件 */
.container {display: flex;flex-direction: column;justify-content: center;align-items: center;height: 100vh;background-color: #f5f5f5;padding: 20px;
}.input-group {width: 100%;max-width: 300px;margin-bottom: 20px;
}input {width: 100%;padding: 10px;border: 1px solid #ccc;border-radius: 4px;font-size: 16px;
}button {width: 100%;max-width: 300px;padding: 10px;background-color: #007bff;color: white;border: none;border-radius: 4px;font-size: 16px;cursor: pointer;
}button:hover {background-color: #0056b3;
}

html

<view class="container"><view class="input-group"><input type="text" placeholder="请输入用户名" bindinput="onUsernameInput" /></view><view class="input-group"><input type="password" placeholder="请输入密码" bindinput="onPasswordInput" /></view><button bindtap="login">登录</button>
</view>

=======-变换 css和html不变

Page({data: {username: '',password: ''},onUsernameInput: function(e) {this.setData({username: e.detail.value});},onPasswordInput: function(e) {this.setData({password: e.detail.value});},login: function() {const { username, password } = this.data;if (!username || !password) {wx.showToast({title: '请输入账号和密码',icon: 'none'});return;}wx.request({url: 'http://127.0.0.1:5000/login',method: 'POST',data: {username,password},success: function(res) {if (res.statusCode === 200) {const data = res.data;wx.showToast({title: data.message,icon: data.status === 'success' ? 'success' : 'none'});if (data.status === 'success') {// 登录成功后,处理返回的数据const userData = data.data; // 获取数组数据console.log(userData); // 这里可以根据需要进行进一步处理// 可以在这里进行页面跳转等操作}} else {wx.showToast({title: '登录失败',icon: 'none'});}},fail: function(err) {wx.showToast({title: '网络错误',icon: 'none'});console.error(err);}});}
});
from flask import Flask, request, jsonifyapp = Flask(__name__)# 假设这是你要发送给前端的数组数据
user_data = [{"id": 1, "username": "user1"},{"id": 2, "username": "user2"},{"id": 3, "username": "user3"}
]@app.route('/login', methods=['POST'])
def login():data = request.get_json()username = data.get('username')password = data.get('password')if username == '1' and password == '1':# 登录成功时返回数据return jsonify({'message': '登录成功', 'status': 'success', 'data': user_data})else:return jsonify({'message': '登录失败', 'status': 'fail'}), 401if __name__ == '__main__':app.run()

相关文章:

web笔记

<form method"POST" action"{{ url_for(register) }}"><label for"username">用户名:</label><input type"text" id"username" name"username" required><br><label for"p…...

【网络安全】-访问控制-burp(1~6)

文章目录 前言   1.Lab: Unprotected admin functionality  2.Lab: Unprotected admin functionality with unpredictable URL   3.Lab: User role controlled by request parameter   4.Lab:User role can be modified in user profile  5.Lab: User ID controlled by…...

iOS 项目中的多主题颜色设计与实现

引言 在现代iOS应用中&#xff0c;用户对个性化体验的需求越来越高&#xff0c;除了功能上的满足&#xff0c;多样的视觉风格也是提升用户体验的重要手段之一。提供多主题颜色的切换功能不仅能满足用户的审美偏好&#xff0c;还可以让应用更具活力&#xff0c;适应不同场景下的…...

Android Camera2 与 Camera API技术探究和RAW数据采集

Android Camera2 Android Camera2 是 Android 系统中用于相机操作的一套高级应用程序接口&#xff08;API&#xff09;&#xff0c;它取代了之前的 Camera API。以下是关于 Android Camera2 的一些主要信息&#xff1a; 主要特点&#xff1a; 强大的控制能力&#xff1a;提供…...

[python][pipenv]pipenv的使用

pipenv 是一个 Python 开发工作流程的工具&#xff0c;它旨在将 pip 的包管理和 virtualenv 的虚拟环境管理结合起来。以下是一些基本的 pipenv 使用方法&#xff1a; 安装 pipenv&#xff1a; 如果你还没有安装 pipenv&#xff0c;可以通过 pip 安装它&#xff1a; pip insta…...

SpringSession微服务

一.在linux中确保启动起来redis和nacos 依赖记得别放<dependencyManagement></dependencyManagement>这个标签去了 1.首先查看已经启动的服务 docker ps 查看有没有安装redis和nacos 2.启动redis和nacos 发现没有启动redis和nacos,我们先来启动它。&#xff0c;…...

强化学习:通过试错学习最优策略---示例:使用Q-Learning解决迷宫问题

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种让智能体&#xff08;agent&#xff09;在与环境交互的过程中&#xff0c;通过最大化某种累积奖励来学习如何采取行动的学习方法。它适用于那些需要连续决策的问题&#xff0c;比如游戏、自动驾驶和机器人控制…...

OpenGL ES 纹理(7)

OpenGL ES 纹理(7) 简述 通过前面几章的学习&#xff0c;我们已经可以绘制渲染我们想要的逻辑图形了&#xff0c;但是如果我们想要渲染一张本地图片&#xff0c;这就需要纹理了。 纹理其实是一个可以用于采样的数据集&#xff0c;比较典型的就是图片了&#xff0c;我们知道我…...

【C#】CacheManager:高效的 .NET 缓存管理库

在现代应用开发中&#xff0c;缓存是提升性能和降低数据库负载的重要技术手段。无论是 Web 应用、桌面应用还是移动应用&#xff0c;缓存都能够帮助减少重复的数据查询和处理&#xff0c;从而提高系统的响应速度。然而&#xff0c;管理缓存并不简单&#xff0c;尤其是当你需要处…...

【数学分析笔记】第4章第2节 导数的意义和性质(2)

4. 微分 4.2 导数的意义与性质 4.2.3 单侧导数 f ′ ( x ) lim ⁡ Δ x → 0 f ( x Δ x ) − f ( x ) Δ x lim ⁡ x → x 0 f ( x ) − f ( x 0 ) x − x 0 f(x)\lim\limits_{\Delta x\to 0}\frac{f(x\Delta x)-f(x)}{\Delta x}\lim\limits_{x\to x_0}\frac{f(x)-f(x_0)…...

深度学习:迁移学习

目录 一、迁移学习 1.什么是迁移学习 2.迁移学习的步骤 1、选择预训练的模型和适当的层 2、冻结预训练模型的参数 3、在新数据集上训练新增加的层 4、微调预训练模型的层 5、评估和测试 二、迁移学习实例 1.导入模型 2.冻结模型参数 3.修改参数 4.创建类&#xff…...

Footprint Growthly Quest 工具:赋能 Telegram 社区实现 Web3 飞速增长

作者&#xff1a;Stella L (stellafootprint.network) 在 Web3 的快节奏世界里&#xff0c;社区互动是关键。而众多 Web3 社区之所以能够蓬勃发展&#xff0c;很大程度上得益于 Telegram 平台。正因如此&#xff0c;Footprint Analytics 精心打造了 Growthly —— 一款专为 Tel…...

进入xwindows后挂起键盘鼠标没有响应@FreeBSD

问题&#xff1a; 在升级pkg包后&#xff0c;系统无法进入xfce等xwindows&#xff0c;表现为黑屏和看见鼠标&#xff0c;左上角有一个白字符块&#xff0c;键盘鼠标没有反应&#xff0c;整个系统卡住。但是可以ssh登录&#xff0c;内部的服务一切正常。 表现 处理过程&#xf…...

CentOS7.9 snmptrapd更改162端口

端口更改前: 命令: netstat -an |grep 162 [root@kibana snmp]# netstat -an | grep 162 udp 0 0 0.0.0.0:162 0.0.0.0:* unix 3 [ ] STREAM CONNECTED 45162 /run/systemd/journal/stdout u…...

模糊测试SFuzz亮相第32届中国国际信息通信展览会

9月25日&#xff0c;被誉为“中国ICT市场的创新基地和风向标”的第32届中国国际信息通信展在北京盛大开幕&#xff0c;本次展会将在为期三天的时间内&#xff0c;为信息通信领域创新成果、尖端技术和产品提供国家级交流平台。开源网安携模糊测试产品及相关解决方案精彩亮相&…...

CMake学习

向大佬lyf学习&#xff0c;先把其8服务器中所授fine 文章目录 前言一、CMakeList.txt 命令1. 最外层CMakeLists1.1 cmake_minimum_required&#xff08;&#xff09;1.2 project&#xff08;&#xff09;1.3 set&#xff08;&#xff09;1.4 add_subdirectory&#xff08;&…...

书生·浦语大模型全链路开源开放体系

书生浦语大模型全链路开源开放体系 大模型应用生态的发展和繁荣是建立在模型基座强大的通用基础能力之上的。上海AI实验室联合团队研究认为&#xff0c;大模型各项性能提升的基础在于语言建模能力的增强&#xff0c;对于大模型的研究应回归语言建模本质&#xff0c;通过更高质量…...

PHP安装swoole扩展无效,如何将文件上传至Docker容器

目录 过程 操作方式 过程 在没有使用过云服务器以前,Docker这个平台一直都很神秘。在我申请了华为云服务器,并使用WordPress镜像去搭建自己的网站以后,我不得不去把Docker平台弄清楚,原因是我使用的一个主题需要安装swoole扩展,才能够正常启用。而要将swoole.so这个扩展…...

Web3.0 应用项目

Web3.0 是下一代互联网的概念&#xff0c;旨在去中心化、用户拥有数据控制权和通过区块链技术实现信任的网络。Web3.0的应用项目主要集中在区块链、加密货币、去中心化应用 (DApps)、去中心化金融 (DeFi)、NFT&#xff08;非同质化代币&#xff09;等领域。以下是一些典型的 We…...

Linux 学习笔记(十六)—— 重定向与缓冲区

一、文件重定向 矩阵的下标&#xff0c;也就是文件描述符的分配规则&#xff0c;是从0开始空的最小的文件描述符分配给进程新打开的文件&#xff1b;文件输出重定向的原理是&#xff0c;关掉1&#xff08;输出&#xff09;&#xff0c;然后打开文件&#xff0c;这个新打开的文…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙

WebGL&#xff1a;在浏览器中解锁3D世界的魔法钥匙 引言&#xff1a;网页的边界正在消失 在数字化浪潮的推动下&#xff0c;网页早已不再是静态信息的展示窗口。如今&#xff0c;我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室&#xff0c;甚至沉浸式的V…...