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

1.前端
<!-- login.wxml -->
<view class="container">
  <input type="text" placeholder="请输入用户名" bindinput="bindUsername" />
  <input type="password" placeholder="请输入密码" bindinput="bindPassword" />
  <button type="primary" bindtap="login">登录</button>
</view>
// 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
        });
      }
    });
  }
});
/* 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.后端
# 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

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='用户信息表,用于存储用户基本信息';
运行效果:

上一篇:Docker-Harbor概述及构建


下一篇:Position Embedding总结和Pytorch实现-出现背景