微信小程序+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='用户信息表,用于存储用户基本信息';
运行效果:
相关推荐
我星期八休息29 分钟前
MySQL数据可视化实战指南
数据库·人工智能·mysql·算法·信息可视化
UR的出不克32 分钟前
使用 Python 爬取 Bilibili 弹幕数据并导出 Excel
java·python·excel
Arms2061 小时前
python时区库学习
开发语言·python·学习
与光同尘 大道至简1 小时前
ESP32 小智 AI 机器人入门教程从原理到实现(自己云端部署)
人工智能·python·单片机·机器人·github·人机交互·visual studio
清水白石0081 小时前
深入 Python 对象模型:PyObject 与 PyVarObject 全解析
开发语言·python
tjjucheng1 小时前
小程序定制开发服务商推荐
python
囊中之锥.1 小时前
《从零到实战:基于 PyTorch 的手写数字识别完整流程解析》
人工智能·pytorch·python
五阿哥永琪1 小时前
MySQL面试题 事务的隔离级别
数据库·mysql
子云之风1 小时前
LSPosed 项目编译问题解决方案
java·开发语言·python·学习·android studio
小北方城市网1 小时前
SpringBoot 全局异常处理与接口规范实战:打造健壮可维护接口
java·spring boot·redis·后端·python·spring·缓存