微信小程序+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='用户信息表,用于存储用户基本信息';
运行效果:
相关推荐
webYin3 小时前
解决 Uni-App 运行到微信小程序时 “Socket合法域名校验出错” 问题
微信小程序·小程序·uni-app
喵手3 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934734 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy4 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ5 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha6 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy6 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
喵手6 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
天天爱吃肉82187 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车