"""初始化示例数据""" from app import create_app, db from app.models import Article, Category, Tag, Admin from app.services import CategoryService, TagService, ArticleService, AdminService from werkzeug.security import generate_password_hash def init_sample_data(): """创建示例数据""" app = create_app('development') with app.app_context(): # 创建数据库表 db.create_all() # 创建管理员 admin = Admin.query.filter_by(username='admin').first() if not admin: admin = Admin(username='admin', email='admin@example.com') admin.set_password('admin123') db.session.add(admin) print('创建管理员: admin / admin123') # 创建分类 categories_data = [ ('Python', 'Python 编程相关技术文章'), ('JavaScript', 'JavaScript 前端开发技术'), ('数据库', '数据库技术与实践'), ('系统架构', '系统设计与架构相关'), ] for name, desc in categories_data: cat = Category.query.filter_by(name=name).first() if not cat: CategoryService.create(name=name, description=desc) print(f'创建分类: {name}') # 创建标签 tags_data = [ ('Flask', '#3498db'), ('Vue', '#42b883'), ('Django', '#092e20'), ('React', '#61dafb'), ('MySQL', '#00758f'), ('PostgreSQL', '#336791'), ('微服务', '#ff6b6b'), ('Docker', '#2496ed'), ] for name, color in tags_data: tag = Tag.query.filter_by(name=name).first() if not tag: TagService.create(name=name, color=color) print(f'创建标签: {name}') # 创建示例文章 python_cat = Category.query.filter_by(name='Python').first() flask_tag = Tag.query.filter_by(name='Flask').first() articles_data = [ { 'title': 'Flask 项目架构最佳实践', 'content': '''# Flask 项目架构最佳实践 ## 项目结构 合理的项目结构是可维护性的基础: ``` project/ ├── app/ │ ├── models/ │ ├── routes/ │ ├── services/ │ └── templates/ ├── migrations/ └── tests/ ``` ## 分层设计 - **Models**:数据模型定义 - **Services**:业务逻辑处理 - **Routes**:路由控制器 ## 为什么这样设计? 1. **关注点分离**:每层只处理自己的职责 2. **易于测试**:业务逻辑与路由解耦 3. **便于扩展**:新增功能不会影响现有结构 ```python # 示例代码 class ArticleService: @staticmethod def get_published_list(page=1): return Article.query.filter_by(is_published=True).paginate(page=page) ``` ## 总结 好的架构设计能让代码更清晰、更易维护。 ''', 'category_id': python_cat.id, 'is_published': True }, { 'title': 'Python 数据处理技巧', 'content': '''# Python 数据处理技巧 ## 列表推导式 简洁高效的数据处理方式: ```python # 传统方式 result = [] for item in items: result.append(item * 2) # 推导式 result = [item * 2 for item in items] ``` ## 字典操作技巧 ```python # 合并字典 dict1 = {'a': 1} dict2 = {'b': 2} merged = {**dict1, **dict2} # defaultdict from collections import defaultdict d = defaultdict(list) d['key'].append('value') ``` ## 性能优化 - 使用生成器节省内存 - 选择合适的数据结构 - 避免不必要的循环 ## 总结 掌握这些技巧能大幅提升代码效率。 ''', 'category_id': python_cat.id, 'is_published': True }, ] for article_data in articles_data: existing = Article.query.filter_by(title=article_data['title']).first() if not existing: ArticleService.create( title=article_data['title'], content=article_data['content'], category_id=article_data.get('category_id'), tag_ids=[flask_tag.id] if flask_tag else [], is_published=article_data.get('is_published', False) ) print(f'创建文章: {article_data["title"]}') db.session.commit() print('\n初始化完成!') print('访问地址:') print(' 前端: http://localhost:16012/') print(' 后台: http://localhost:16012/admin/login') print(' 账号: admin / admin123') if __name__ == '__main__': init_sample_data()