# encoding:utf-8
from flask import Flask, render_template, request, redirect, url_for, flash, jsonify, session
import mysql.connector
from werkzeug.security import generate_password_hash, check_password_hash
app = Flask(__name__)
app.secret_key = '20230111' # 用于保护会话
# 数据库连接配置
db_config = {
'user': 'root',
'password': 'root',
'host': '127.0.0.1',
'database': 'home',
'raise_on_warnings': True
}
# 主页路由
@app.route('/')
def home():
return render_template('home.html', title='学生信息网址')
# 登录路由
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
# 数据库连接
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor(dictionary=True)
# 查询用户
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
user = cursor.fetchone()
# 验证密码
if user and check_password_hash(user['password'], password):
# 登录成功
session['username'] = username
return redirect(url_for('home'))
else:
# 登录失败
flash('用户名或密码错误')
cursor.close()
conn.close()
return render_template('login.html')
# 注册路由
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
email = request.form['email']
name = request.form['fullname']
# 加密密码
hashed_password = generate_password_hash(password)
# 数据库连接
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
# 插入新用户
cursor.execute("INSERT INTO users (username, password, email, name) VALUES (%s, %s, %s, %s)", (username, hashed_password, email, name))
conn.commit()
cursor.close()
conn.close()
session['username'] = username
return redirect(url_for('home'))
return render_template('register.html')
@app.route('/getUser', methods=['GET', 'POST'])
def get_user():
return jsonify({'username': session.get('username', '')})
@app.route('/out', methods=['GET', 'POST'])
def login_out():
session.clear()
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)