from django.core.management.base import BaseCommand from django.contrib.auth import get_user_model from article.models import Article User = get_user_model() class Command(BaseCommand): help = '初始化文章种子数据' def handle(self, *args, **options): admin = User.objects.filter(is_superuser=True).first() if not admin: admin = User.objects.first() if not admin: self.stdout.write(self.style.ERROR('未找到任何用户,请先创建用户')) return articles_data = [ { 'title': 'Python 异步编程指南:从 asyncio 到实战应用', 'excerpt': '深入理解 Python 异步编程的核心概念,掌握 asyncio 库的使用方法,通过实战案例提升编程技能。', 'category': 'tech', 'tags': ['Python', 'asyncio', '异步编程'], 'cover_image': 'https://images.unsplash.com/photo-1526379095098-d400fd0bf935?w=800&h=400&fit=crop', 'content': ''' # Python 异步编程指南 异步编程是现代软件开发中的重要技能,特别是在处理 I/O 密集型任务时。Python 通过 `asyncio` 库提供了强大的异步编程支持。 ## 什么是异步编程? 异步编程是一种并发编程范式,允许程序在等待 I/O 操作完成时执行其他任务,而不是阻塞等待。 ### 核心概念 - **协程(Coroutine)**:使用 `async def` 定义的函数,可以在执行过程中暂停和恢复 - **事件循环(Event Loop)**:调度和执行协程的核心机制 - **任务(Task)**:协程的包装器,用于在事件循环中调度执行 ## asyncio 基础 ```python import asyncio async def hello(): print("Hello") await asyncio.sleep(1) print("World") asyncio.run(hello()) ``` ## 实战应用 异步编程广泛应用于 Web 爬虫、API 开发、数据处理等场景。 ''', }, { 'title': 'Vue 3 组合式 API 最佳实践', 'excerpt': '全面介绍 Vue 3 组合式 API 的使用技巧和最佳实践,帮助你构建更可维护的 Vue 应用。', 'category': 'tech', 'tags': ['Vue', 'JavaScript', '前端'], 'cover_image': 'https://images.unsplash.com/photo-1555066931-4365d14bab8c?w=800&h=400&fit=crop', 'content': ''' # Vue 3 组合式 API 最佳实践 Vue 3 的组合式 API(Composition API)为我们提供了更灵活的代码组织方式。 ## setup 函数 组合式 API 的核心是 `setup` 函数,它是组件逻辑的入口点。 ```javascript import { ref, computed, onMounted } from 'vue' export default { setup() { const count = ref(0) const doubled = computed(() => count.value * 2) onMounted(() => { console.log('Component mounted') }) return { count, doubled } } } ``` ## 响应式基础 - **ref()**:创建响应式引用 - **reactive()**:创建响应式对象 - **computed()**:创建计算属性 ## 生命周期钩子 在组合式 API 中使用 `onMounted`、`onUpdated` 等钩子函数。 ''', }, { 'title': '深入理解 TypeScript 类型系统', 'excerpt': '探索 TypeScript 高级类型特性,包括泛型、条件类型、映射类型等,提升代码的类型安全性。', 'category': 'tech', 'tags': ['TypeScript', '类型系统', '前端'], 'cover_image': 'https://images.unsplash.com/photo-1516116216624-53e697fedbea?w=800&h=400&fit=crop', 'content': ''' # 深入理解 TypeScript 类型系统 TypeScript 的类型系统是其最强大的特性之一,它帮助我们在开发阶段捕获错误。 ## 泛型(Generics) 泛型允许我们创建可重用的组件,支持多种类型。 ```typescript function identity(arg: T): T { return arg } const result = identity("hello") ``` ## 条件类型 条件类型允许我们根据条件选择不同的类型。 ```typescript type IsString = T extends string ? true : false type A = IsString // true type B = IsString // false ``` ## 映射类型 映射类型可以基于旧类型创建新类型。 ```typescript type Readonly = { readonly [P in keyof T]: T[P] } ''', }, { 'title': 'UI 设计原则:打造用户友好的界面', 'excerpt': '学习 UI 设计的核心原则,包括一致性、层次感、对比度等,创建美观且易用的产品界面。', 'category': 'design', 'tags': ['UI设计', '用户体验', '设计原则'], 'cover_image': 'https://images.unsplash.com/photo-1561070791-2526d30994b5?w=800&h=400&fit=crop', 'content': ''' # UI 设计原则 优秀的 UI 设计不仅要美观,更要易用。以下是核心设计原则: ## 一致性(Consistency) 保持设计元素的一致性,包括: - 颜色方案 - 字体选择 - 按钮样式 - 间距规范 ## 层次感(Hierarchy) 通过大小、颜色、位置等元素建立视觉层次,引导用户注意力。 ## 对比度(Contrast) 适当的对比度可以: - 提高可读性 - 突出重点内容 - 增强视觉冲击 ## 留白(Whitespace) 合理使用留白可以让界面更清爽,提升阅读体验。 ## 反馈(Feedback) 为用户的操作提供即时反馈,增强交互体验。 ''', }, { 'title': '高效开发者的 10 个工作习惯', 'excerpt': '分享提升开发效率的实用习惯,包括代码管理、调试技巧、时间管理等。', 'category': 'productivity', 'tags': ['效率', '开发习惯', '时间管理'], 'cover_image': 'https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?w=800&h=400&fit=crop', 'content': ''' # 高效开发者的 10 个工作习惯 成为高效开发者不仅需要技术能力,更需要良好的工作习惯。 ## 1. 每日规划 每天开始工作前,花 10 分钟规划当天的任务优先级。 ## 2. 番茄工作法 使用番茄工作法保持专注: - 25 分钟专注工作 - 5 分钟休息 - 每 4 个番茄钟后休息 15-30 分钟 ## 3. 代码审查 养成代码审查的习惯,既能学习他人代码,也能提高代码质量。 ## 4. 持续学习 每天抽出时间学习新技术,保持技术敏感度。 ## 5. 文档化 及时记录重要信息和解决方案,建立个人知识库。 ## 6. 自动化 将重复性工作自动化,节省时间和精力。 ## 7. 健康生活 保持规律的作息和运动,健康的身体是高效工作的基础。 ''', }, { 'title': '2026 年前端技术趋势展望', 'excerpt': '分析 2026 年前端技术的发展趋势,包括框架演进、工具链变化、新兴技术等。', 'category': 'industry', 'tags': ['前端趋势', '技术发展', '行业洞察'], 'cover_image': 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&h=400&fit=crop', 'content': ''' # 2026 年前端技术趋势展望 前端技术发展迅速,让我们一起看看 2026 年的技术趋势: ## 框架演进 - **React 19+**:服务器组件、并发特性更加成熟 - **Vue 3.5+**:性能优化、组合式 API 增强 - **Svelte 5**:运行时性能持续提升 ## 构建工具 - **Vite**:成为主流构建工具 - **Turbopack**:Rust 构建工具持续发力 - **Lightning CSS**:CSS 处理速度大幅提升 ## 新兴技术 - **AI 辅助开发**:Copilot 等工具深度集成 - **WebAssembly**:更多场景落地 - **边缘计算**:前端与边缘计算融合 ## 开发体验 - **HMR**:热更新速度更快 - **类型安全**:TypeScript 成为标配 - **低代码**:可视化开发工具发展 作为开发者,保持学习热情,紧跟技术潮流。 ''', }, { 'title': 'Django REST Framework 最佳实践', 'excerpt': '掌握 Django REST Framework 的高级用法,构建健壮的 RESTful API。', 'category': 'tech', 'tags': ['Django', 'DRF', '后端'], 'cover_image': 'https://images.unsplash.com/photo-1555949963-aa79dcee981c?w=800&h=400&fit=crop', 'content': ''' # Django REST Framework 最佳实践 DRF 是 Django 生态中最强大的 API 开发框架。 ## 序列化器(Serializer) ```python from rest_framework import serializers class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'username', 'email'] ``` ## 视图集(ViewSet) 使用 ViewSet 可以快速构建 CRUD API: ```python from rest_framework import viewsets class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer ``` ## 权限控制 DRF 提供多种权限类: - `AllowAny`:任何人可访问 - `IsAuthenticated`:仅登录用户 - `IsAdminUser`:仅管理员 ## 分页 使用 PageNumberPagination 或 CursorPagination 处理大数据集。 ''', }, { 'title': 'CSS Grid 布局完全指南', 'excerpt': '从基础到高级,全面掌握 CSS Grid 布局,创建复杂的响应式页面布局。', 'category': 'tech', 'tags': ['CSS', 'Grid', '布局'], 'cover_image': 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=800&h=400&fit=crop', 'content': ''' # CSS Grid 布局完全指南 CSS Grid 是一个强大的二维布局系统,让页面布局变得简单直观。 ## 基础概念 - **Grid Container**:网格容器 - **Grid Item**:网格项 - **Grid Track**:网格轨道 - **Grid Cell**:网格单元格 - **Grid Area**:网格区域 ## 容器属性 ```css .container { display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: auto; gap: 20px; } ``` ## 响应式 Grid ```css .container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; } ``` ## 对齐方式 - `justify-items`:水平对齐 - `align-items`:垂直对齐 - `place-items`:简写属性 ''', }, ] created_count = 0 for article_data in articles_data: article_data['author'] = admin article_data['status'] = 'published' article_data.setdefault('is_featured', False) article_data.setdefault('is_top', False) article, created = Article.objects.update_or_create( title=article_data['title'], defaults=article_data ) if created: created_count += 1 self.stdout.write( self.style.SUCCESS( f'成功创建 {created_count} 篇文章(共 {len(articles_data)} 篇)' ) )