This repository has been archived on 2024-09-30. You can view files and clone it, but cannot push or open issues/pull-requests.
SmartRollCall/app/views.py

86 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from flask import Flask, request, redirect, url_for, render_template, session, jsonify
from db.connection import MySQLPool
from config import SECRET_KEY
from db.database_manager import DatabaseManager
from models.User import User
app = Flask(__name__)
app.secret_key = SECRET_KEY # 从配置文件设置
# 一个全局MySQLPool对象用于管理数据库连接
mysql_pool = MySQLPool()
@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':
data = request.get_json()
# print(data)
user = User(
nickname=data.get('nickname'),
phone_number=data.get('cellphone'), # 确保JSON中的键和这里匹配
password=data.get('password'),
identity=data.get('identity'),
is_active=True # 或者根据你的逻辑设置
)
db_manager = DatabaseManager()
if not db_manager.user_exists(user.phone_number):
db_manager.insert_user(user)
return jsonify({"success": True, "message": "注册成功"})
else:
return jsonify({"success": False, "message": "用户已存在"})
else:
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
phone_number = request.form['username']
password = request.form['password']
db_manager = DatabaseManager()
# 验证用户名和密码...
if db_manager.valid_login(phone_number, password):
# 登录成功
session['username'] = phone_number
return jsonify(success=True, message="登录成功")
else:
# 登录失败
return jsonify(success=False, message="无效的用户名或密码")
@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)