from flask import Flask, render_template, request, redirect, url_for, flash, session from extensions import db # 从 extensions 导入 db from movies import movies_bp # 导入蓝图 from models import User app = Flask(__name__) app.secret_key = 'f0d89ad2bad39872d3a48871ba4f95f4aea178fb8d1e43' # 配置 MySQL app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3316/filmsystem' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 初始化数据库 db.init_app(app) # 注册猜你喜欢模块 from recommendations import recommendations_bp app.register_blueprint(recommendations_bp) # 注册detail.html蓝图 app.register_blueprint(movies_bp) # 注册dashboard.html蓝图 from dashboard import dashboard_bp app.register_blueprint(dashboard_bp) @app.route('/') def index(): return redirect(url_for('auth')) # 注册/登录页面 @app.route('/auth', methods=['GET', 'POST']) def auth(): if 'user_id' in session: # 已登录用户重定向 return redirect(url_for('dashboard')) if request.method == 'POST': # 检查当前表单模式 mode = request.form.get('mode') if mode == 'register': # 注册流程 email = request.form.get('email') password = request.form.get('password') # 明文存储密码 nickname = request.form.get('nickname') user_type = request.form.get('user_type') # 是否已经注册 if User.query.filter_by(email=email).first(): flash('Email is already registered.') return redirect(url_for('auth')) # 创建用户并保存 new_user = User( email=email, password=password, nickname=nickname, user_type=user_type ) db.session.add(new_user) db.session.commit() flash('Registration successful! Please log in.') return redirect(url_for('auth')) elif mode == 'login': # 登录流程 email = request.form.get('email') password = request.form.get('password') # 查询用户 user = User.query.filter_by(email=email).first() if user and user.password == password: # 直接比较明文密码 session['user_id'] = user.id # 保存用户会话 session['nickname'] = user.nickname # 保存昵称在session中 session['user_type'] = user.user_type # 保存用户身份 return redirect(url_for('dashboard')) else: flash('Invalid email or password.') return redirect(url_for('auth')) return render_template('auth.html') # 渲染注册/登录页面 # 用户仪表盘,只有登录后才能访问 @app.route('/dashboard') def dashboard(): if 'user_id' not in session: return redirect(url_for('auth')) return "Welcome to the dashboard!" # 退出登录 @app.route('/logout') def logout(): session.pop('user_id', None) flash('You have been logged out.') return redirect(url_for('auth')) if __name__ == '__main__': app.run(debug=True)