Compare commits

...

8 Commits

Author SHA1 Message Date
wangsiyuan e2efd8b029 更新 views.py 2023-12-25 15:02:15 +08:00
wangsiyuan 95b3aea9a2 更新 config.py 2023-12-25 15:02:12 +08:00
wangsiyuan fc8569c81d 创建 __init__.py 2023-12-25 15:02:10 +08:00
wangsiyuan a75ff25ba4 创建 connection.py 2023-12-25 15:02:06 +08:00
wangsiyuan f0647238c4 创建 database_manager.py 2023-12-25 15:02:04 +08:00
wangsiyuan 7bf2cfb68a 创建 __init__.py 2023-12-25 15:02:02 +08:00
wangsiyuan cfa14f34be 创建 User.py 2023-12-25 15:02:00 +08:00
wangsiyuan 4a045b7fc6 创建 mysql.sql 2023-12-25 15:01:57 +08:00
8 changed files with 173 additions and 0 deletions

View File

@ -0,0 +1,69 @@
from flask import Flask, request, redirect, url_for, render_template, session, jsonify
app = Flask(__name__)
app.secret_key = 'sUNiJ7QPulxrbmZD'
@app.route('/')
def index():
# 如果用户已登录,则重定向到主页;否则,重定向到登录页面
if 'username' in session:
return redirect(url_for('home'))
else:
return render_template('login.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
# 解析JSON数据而不是表单数据
data = request.get_json()
nick_name = data['nickname']
print(nick_name)
# 处理注册逻辑...
return jsonify({"success": True, "message": "注册成功"}) # 返回JSON响应
else:
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
username = request.form['username']
password = request.form['password']
print(username, password)
# 验证用户名和密码...
if valid_login(username, password):
# 登录成功
session['username'] = username
return jsonify(success=True, message="登录成功")
else:
# 登录失败
return jsonify(success=False, message="无效的用户名或密码")
def valid_login(username, password):
# 这里应该是验证用户名和密码的逻辑,比如查询数据库等等
# 假设用户名是admin且密码是secret
return username == '1' and password == '1'
@app.route('/forget', methods=['GET', 'POST'])
def forget_page():
return render_template('forget.html')
@app.route('/home')
def home():
if 'username' in session:
return render_template('home.html')
else:
return redirect("login")
@app.route('/logout')
def logout():
# 清除session中的所有信息
session.clear()
# 返回一个响应,或者重定向到登录页面
return redirect('/login')
if __name__ == '__main__':
app.run(debug = True)

View File

@ -0,0 +1,11 @@
# config.py
# 数据库连接配置
DB_CONFIG = {
'host': '42.193.20.110',
'user': 'test',
'password': 'X7gq9lbxqpDGbyCi',
'database': 'test_db',
'charset': 'utf8mb4',
'cursorclass': 'pymysql.cursors.DictCursor'
}

0
db/__init__.py Normal file
View File

35
db/connection.py Normal file
View File

@ -0,0 +1,35 @@
import pymysql
from dbutils.pooled_db import PooledDB
from config import DB_CONFIG
class MySQLPool:
def __init__(self):
# 初始化时建立数据库连接池
self.pool = PooledDB(
creator=pymysql, # 使用链接数据库的模块
maxconnections=6, # 连接池允许的最大连接数
mincached=2, # 初始化时,连接池中至少创建的空闲的连接
maxcached=5, # 连接池中最多闲置的连接
blocking=True, # 连接池中如果没有可用连接后是否阻塞等待
maxusage=None, # 一个连接最多被重复使用的次数None表示无限制
setsession=[], # 开始会话前执行的命令列表
ping=0,
**DB_CONFIG
)
def get_connection(self):
# 从连接池中获取一个连接
return self.pool.connection()
# 使用上下文管理器自动处理连接的开启和关闭
def execute(self, sql, args=None):
with self.get_connection() as connection:
with connection.cursor() as cursor:
cursor.execute(sql, args)
if sql.strip().lower().startswith("select"):
# 如果是查询操作,返回所有结果
return cursor.fetchall()
else:
# 如果是增、删、改操作,提交事务并返回影响的行数
connection.commit()
return cursor.rowcount

28
db/database_manager.py Normal file
View File

@ -0,0 +1,28 @@
import pymysql
from config import DB_CONFIG
class DatabaseManager:
def __init__(self):
self.connection = pymysql.connect(**DB_CONFIG)
def fetch(self, query, params=None):
# 实现查询逻辑
pass
def insert(self, query, params=None):
# 实现插入逻辑
pass
def update(self, query, params=None):
# 实现更新逻辑
pass
def delete(self, query, params=None):
# 实现删除逻辑
pass
def close(self):
# 关闭数据库连接
self.connection.close()
# 可能还包含其他数据库操作方法...

10
models/User.py Normal file
View File

@ -0,0 +1,10 @@
class User:
def __init__(self, nickname, phone_number, password, identity, is_active):
self.nickname = nickname # 用户昵称
self.phone_number = phone_number # 手机号
self.password = password # 密码
self.identity = identity # 身份(老师或学生)
self.is_active = is_active # 状态(是否可用)
def __str__(self):
return f"User({self.nickname}, {self.phone_number}, {'Teacher' if self.identity == 'teacher' else 'Student'}, {'Active' if self.is_active else 'Inactive'})"

0
models/__init__.py Normal file
View File

20
mysql.sql Normal file
View File

@ -0,0 +1,20 @@
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
nickname VARCHAR(50) NOT NULL,
phone_number VARCHAR(15) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
identity ENUM('teacher', 'student') NOT NULL,
is_active BOOLEAN NOT NULL
);
INSERT INTO user (nickname, phone_number, password, identity, is_active) VALUES
('Alice', '10000000001', 'password1', 'student', TRUE),
('Bob', '10000000002', 'password2', 'teacher', TRUE),
('Carol', '10000000003', 'password3', 'student', FALSE),
('David', '10000000004', 'password4', 'teacher', TRUE),
('Eve', '10000000005', 'password5', 'student', TRUE),
('Frank', '10000000006', 'password6', 'teacher', FALSE),
('Grace', '10000000007', 'password7', 'student', TRUE),
('Hank', '10000000008', 'password8', 'teacher', TRUE),
('Ivy', '10000000009', 'password9', 'student', FALSE),
('Jack', '10000000010', 'password10', 'teacher', TRUE);