from flask import Flask, request, jsonify, redirect, url_for, render_template, session, make_response from flask_cors import CORS from flask_mail import Mail from flask_bcrypt import Bcrypt from flask_session import Session from dotenv import load_dotenv import os import logging import app_function # 引入新的文件 # 载入环境变量 load_dotenv() # 初始化 Flask 应用 app = Flask(__name__, static_url_path='', static_folder='.') CORS(app, resources={r"/*": {"origins": "*", "methods": "GET,POST,PUT,DELETE,OPTIONS"}}) bcrypt = Bcrypt(app) # 确保 SECRET_KEY 被设置 app.secret_key = os.getenv('SECRET_KEY', 'you_will_never_guess') app.config['SESSION_TYPE'] = 'filesystem' app.config['SESSION_PERMANENT'] = False Session(app) # 配置邮件 app.config.update( MAIL_SERVER=os.getenv('EMAIL_HOST'), MAIL_PORT=os.getenv('EMAIL_PORT'), MAIL_USE_SSL=True, MAIL_USERNAME=os.getenv('EMAIL_USERNAME'), MAIL_PASSWORD=os.getenv('EMAIL_PASSWORD'), MAIL_DEFAULT_SENDER=(os.getenv('EMAIL_FROM_NAME'), os.getenv('EMAIL_FROM')) ) mail = Mail(app) logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') # 添加路由 app_function.add_admin_routes(app, mail, bcrypt) app_function.add_teacher_routes(app, mail, bcrypt) @app.before_request def before_request_func(): if request.method == 'OPTIONS': return app_function._build_cors_preflight_response() if __name__ == '__main__': app.run(debug=True)