sync from local backup

This commit is contained in:
chunyu
2026-08-05 23:59:15 +08:00
commit d48ec1747c
358 changed files with 34384 additions and 0 deletions
@@ -0,0 +1,378 @@
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<T>(arg: T): T {
return arg
}
const result = identity<string>("hello")
```
## 条件类型
条件类型允许我们根据条件选择不同的类型。
```typescript
type IsString<T> = T extends string ? true : false
type A = IsString<string> // true
type B = IsString<number> // false
```
## 映射类型
映射类型可以基于旧类型创建新类型。
```typescript
type Readonly<T> = {
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)} 篇)'
)
)