import os from flask import Flask, render_template from flask_login import LoginManager from config import Config from models import db, User # 初始化Flask扩展 login_manager = LoginManager() def create_app(config_class=Config): """应用工厂函数""" app = Flask(__name__) app.config.from_object(config_class) # 初始化扩展 db.init_app(app) login_manager.init_app(app) login_manager.login_view = 'auth.login' login_manager.login_message = '请先登录' # 初始化配置 config_class.init_app(app) # 注册蓝图 from routes.auth import auth_bp from routes.posts import posts_bp from routes.users import users_bp from routes.new_admin import admin_bp app.register_blueprint(auth_bp) app.register_blueprint(posts_bp) app.register_blueprint(users_bp) app.register_blueprint(admin_bp) # 创建数据库表 with app.app_context(): db.create_all() # 创建默认管理员账号(如果不存在) admin = User.query.filter_by(username='admin').first() if not admin: admin = User( username='admin', email='admin@luzhou-photo.com', is_approved=True, is_admin=True, password_changed=False # 首次登录需修改密码 ) admin.set_password('adminlg') db.session.add(admin) db.session.commit() print("✅ 默认管理员账号已创建: admin / adminlg") # 错误处理 @app.errorhandler(404) def not_found_error(error): return render_template('errors/404.html'), 404 @app.errorhandler(500) def internal_error(error): db.session.rollback() return render_template('errors/500.html'), 500 # 路由:提供上传文件访问 @app.route('/uploads/') def uploaded_file(filename): from flask import send_from_directory return send_from_directory(app.config['UPLOAD_FOLDER'], filename) return app @login_manager.user_loader def load_user(user_id): """加载用户""" return User.query.get(int(user_id)) if __name__ == '__main__': app = create_app() app.run(debug=True, host='0.0.0.0', port=5000)