微信小程序+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='用户信息表,用于存储用户基本信息';
运行效果:
相关推荐
考拉讲支付8 分钟前
母婴亲子服务平台分账架构设计:多场景多方分账与合规清结算实践
大数据·运维·人工智能·微信小程序·架构·微信公众平台
拖孩9 分钟前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
滴啦嘟啦哒12 分钟前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
全栈练习生28 分钟前
AI安全与红队测试
python·ai
小羊没烦恼!33 分钟前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
费曼学习法34 分钟前
把「发送成功」当「送达」?我排查 IM 长消息被静默吞掉的完整过程
python·ai编程·自动化运维
鸽鸽程序猿35 分钟前
【项目】【在线判题系统】b端题目增删改
开发语言·python
NetX行者44 分钟前
Python 工程化入门:从脚本到规范的 Python 项目结构
网络·python
MasonYyp1 小时前
asyncio并发协程
python
geovindu1 小时前
sql: JSON and XML Data Handling in SQL using mysql 9.0
数据库·sql·mysql·数据库开发