Files
ai-app-database/app/__init__.py
T
huty f103148ebf feat: 初始化个人资料库 Web 应用
基于 Flask + MySQL + Bootstrap 5 的全栈个人资料库管理系统。

主要功能:
- 管理员/普通用户双角色权限体系,全站登录保护
- 资源管理:文本、图片、音频、视频四类资源
- 三种添加方式:本地上传(拖拽)、URL 后台下载、磁力下载(aria2c)
- 在线预览:文本、图片、HTML5 音视频播放器
- 安全:bcrypt 加盐密码哈希、CSRF 防护、SQLAlchemy ORM 防注入

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:16:59 +09:00

61 lines
1.8 KiB
Python

import os
from flask import Flask
from config import config
from app.extensions import db, login_manager, bcrypt, csrf, migrate
def create_app(config_name=None):
if config_name is None:
config_name = os.environ.get('FLASK_ENV', 'default')
app = Flask(__name__)
app.config.from_object(config[config_name])
# 确保上传目录存在
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
for sub in ['text', 'image', 'audio', 'video', 'temp']:
os.makedirs(os.path.join(app.config['UPLOAD_FOLDER'], sub), exist_ok=True)
# 初始化扩展
db.init_app(app)
login_manager.init_app(app)
bcrypt.init_app(app)
csrf.init_app(app)
migrate.init_app(app, db)
# 注册蓝图
from app.routes.auth import auth_bp
from app.routes.admin import admin_bp
from app.routes.resources import resources_bp
from app.routes.main import main_bp
app.register_blueprint(auth_bp, url_prefix='/auth')
app.register_blueprint(admin_bp, url_prefix='/admin')
app.register_blueprint(resources_bp, url_prefix='/resources')
app.register_blueprint(main_bp)
# 注册错误处理
from app.routes.errors import register_error_handlers
register_error_handlers(app)
# 注册模板过滤器
from app.utils.filters import register_filters
register_filters(app)
# 注册全局模板函数
from flask_wtf.csrf import generate_csrf
from markupsafe import Markup
@app.context_processor
def inject_globals():
from app.models.setting import SystemSetting
site_name = SystemSetting.get('site_name', '个人资料库')
return dict(site_name=site_name)
@app.template_global()
def csrf_token_input():
token = generate_csrf()
return Markup(f'<input type="hidden" name="csrf_token" value="{token}">')
return app