微信小程序+python+mysql,实现登录功能

1.前端
html 复制代码
<!-- login.wxml -->
<view class="container">
  <input type="text" placeholder="请输入用户名" bindinput="bindUsername" />
  <input type="password" placeholder="请输入密码" bindinput="bindPassword" />
  <button type="primary" bindtap="login">登录</button>
</view>
javascript 复制代码
// login.js
Page({
  data: {
    username: '',
    password: ''
  },
  bindUsername: function (e) {
    this.setData({
      username: e.detail.value
    });
  },
  bindPassword: function (e) {
    this.setData({
      password: e.detail.value
    });
  },
  login: function () {
    const that = this;
    wx.request({
      url: 'http://127.0.0.1:5000/login',  
      method: 'POST',
      data: {
        username: that.data.username,
        password: that.data.password
      },
      success(res) {
        if (res.data.code === 200) {
          wx.showToast({
            title: '登录成功',
            icon: 'success',
            duration: 2000
          });
        } else {
          wx.showToast({
            title: '用户名或密码错误',
            icon: 'error',
            duration: 2000
          });
        }
      },
      fail() {
        wx.showToast({
          title: '请求失败',
          icon: 'error',
          duration: 2000
        });
      }
    });
  }
});
html 复制代码
/* login.wxss */
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  height: 100vh;
  background-color: #f0f2f5;
}

.form-item {
  margin-bottom: 20px;
  width: 80%;
}

.input {
  width: 100%;
  height: 40px;
  padding: 0 10px;
  border: 1px solid #ccc;
  border-radius: 5px;
  font-size: 16px;
  background-color: #fff;
}

.btn {
  width: 80%;
  height: 45px;
  background-color: #007aff;
  color: #ffffff;
  text-align: center;
  line-height: 45px;
  border-radius: 5px;
  font-size: 18px;
  font-weight: bold;
  border: none;
}
2.后端
python 复制代码
# server.py
from flask import Flask, request, jsonify
import pymysql

app = Flask(__name__)

# 数据库连接
def get_db_connection():
    connection = pymysql.connect(
        host='localhost',
        user='root',
        password='password',
        database='user_db',
        charset='utf8mb4',
        cursorclass=pymysql.cursors.DictCursor
    )
    return connection

# 登录接口
@app.route('/login', methods=['POST'])
def login():
    data = request.get_json()
    username = data.get('username')
    password = data.get('password')

    # 数据库查询用户信息
    connection = get_db_connection()
    try:
        with connection.cursor() as cursor:
            sql = "SELECT * FROM users WHERE username=%s AND password=%s"
            cursor.execute(sql, (username, password))
            user = cursor.fetchone()
            if user:
                return jsonify({'code': 200, 'message': '登录成功'})
            else:
                return jsonify({'code': 401, 'message': '用户名或密码错误'})
    finally:
        connection.close()

if __name__ == '__main__':
    app.run(debug=True)
3.DB
sql 复制代码
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID,主键,自增', 
    username VARCHAR(100) NOT NULL UNIQUE COMMENT '用户名,唯一且必填',
    password VARCHAR(255) NOT NULL COMMENT '密码(存储加密后的密码)',
    email VARCHAR(100) UNIQUE COMMENT '用户邮箱,唯一',
    phone_number VARCHAR(20) UNIQUE COMMENT '用户手机号码,唯一',
    role ENUM('admin', 'user') DEFAULT 'user' COMMENT '用户角色,默认为普通用户',
    register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间,默认为记录创建的时间',
    last_login DATETIME COMMENT '上次登录时间,记录用户最近一次的登录时间',
    is_active BOOLEAN DEFAULT TRUE COMMENT '用户状态,是否激活,默认值为激活'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表,用于存储用户基本信息';
运行效果:
相关推荐
DreamLife☼3 分钟前
OpenBCI-Python与OpenBCI:实时脑电信号采集实战
开发语言·python·硬件·选型·openbci·cyton·ganglion
AI行业学习5 分钟前
CC-Switch 下载、安装与使用配置指南【2026.5.29】
java·开发语言·vscode·python·eclipse·laravel
朝阳5816 分钟前
MySQL 主从复制 — 双服务器灾备方案(原生安装)
服务器·数据库·mysql
JustNow_Man8 分钟前
“失败后自动拉起修复 Agent”的闭环流水线
前端·人工智能·chrome·python
许彰午8 分钟前
03_Java流程控制详解
java·开发语言·python
2201_7611990415 分钟前
python运维1
运维·开发语言·python
he___H15 分钟前
微信小程序实现两行交错功能
微信小程序·小程序
盼小辉丶16 分钟前
PyTorch深度学习实战(55)——在Android上部署PyTorch模型
android·pytorch·python·模型部署
SunnyDays101119 分钟前
使用 Python 加密、保护和签名 PowerPoint 演示文稿 (PPT)
python·powerpoint·加密 ppt·保护 ppt·给ppt添加数字签名
Wonderful U21 分钟前
Django+Python后端实战|AI智能图像去水印系统:基于OpenCV+大模型实现无损图片水印消除
人工智能·python·django