taibai_shopping/app/__init__.py
2025-07-04 19:07:35 +08:00

96 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Flask应用工厂
"""
from flask import Flask
from flask_mail import Mail
from config.config import Config
from config.database import db
import re
# 初始化邮件服务
mail = Mail()
def create_app(config_name='default'):
app = Flask(__name__)
# 加载配置
app.config.from_object(Config)
# 初始化数据库
db.init_app(app)
# 初始化邮件服务
mail.init_app(app)
# 注册自定义过滤器
register_filters(app)
# 注册蓝图
register_blueprints(app)
# 创建数据库表
with app.app_context():
try:
db.create_all()
print("✅ 数据库表创建/同步成功")
except Exception as e:
print(f"❌ 数据库表创建失败: {str(e)}")
return app
def register_filters(app):
"""注册自定义过滤器"""
@app.template_filter('nl2br')
def nl2br_filter(text):
"""将换行符转换为HTML <br> 标签"""
if not text:
return ''
# 将换行符替换为 <br> 标签
return text.replace('\n', '<br>')
@app.template_filter('truncate_chars')
def truncate_chars_filter(text, length=50):
"""截断字符串"""
if not text:
return ''
if len(text) <= length:
return text
return text[:length] + '...'
def register_blueprints(app):
"""注册蓝图"""
from app.views.main import main_bp
from app.views.auth import auth_bp
from app.views.user import user_bp
from app.views.admin import admin_bp
from app.views.product import product_bp
from app.views.cart import cart_bp
from app.views.address import address_bp
from app.views.order import order_bp
from app.views.payment import payment_bp
app.register_blueprint(main_bp)
app.register_blueprint(auth_bp)
app.register_blueprint(user_bp)
app.register_blueprint(admin_bp)
app.register_blueprint(product_bp)
app.register_blueprint(cart_bp)
app.register_blueprint(address_bp)
app.register_blueprint(order_bp)
app.register_blueprint(payment_bp)
# 修复正确注册upload蓝图并设置URL前缀
try:
from app.views.upload import upload_bp
app.register_blueprint(upload_bp, url_prefix='/upload') # 添加URL前缀
print("✅ 上传功能蓝图注册成功")
except ImportError as e:
print(f"⚠️ 上传功能暂时不可用: {str(e)}")
print("✅ 商品管理蓝图注册成功")
print("✅ 购物车蓝图注册成功")