Compare commits
8 Commits
10bb0b8f77
...
e2efd8b029
| Author | SHA1 | Date | |
|---|---|---|---|
| e2efd8b029 | |||
| 95b3aea9a2 | |||
| fc8569c81d | |||
| a75ff25ba4 | |||
| f0647238c4 | |||
| 7bf2cfb68a | |||
| cfa14f34be | |||
| 4a045b7fc6 |
69
app/views.py
69
app/views.py
@@ -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)
|
||||||
|
|||||||
11
config.py
11
config.py
@@ -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
0
db/__init__.py
Normal file
35
db/connection.py
Normal file
35
db/connection.py
Normal 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
28
db/database_manager.py
Normal 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
10
models/User.py
Normal 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
0
models/__init__.py
Normal file
20
mysql.sql
Normal file
20
mysql.sql
Normal 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);
|
||||||
Reference in New Issue
Block a user