import os from django.core.management.base import BaseCommand from learn.models import Course, Chapter, ChapterContent, CourseMaterial SAMPLE_VIDEO_URL = "https://www.bilibili.com/video/BV1uv411q7Mv" CHAPTER_CONTENT_MAP = { "HTML 基础结构": """# HTML 基础结构 ## 学习目标 - 理解 HTML 的作用和基本概念 - 掌握 HTML 文档的基本结构 - 熟悉常用的 HTML 标签 ## 什么是 HTML? HTML(HyperText Markup Language)是一种用于创建网页的标记语言。它使用标签来描述网页的结构和内容。 ## HTML 文档结构 ```html 页面标题

欢迎来到我的网页

这是一个段落。

``` ## 常用标签 | 标签 | 说明 | |------|------| | `

` ~ `

` | 标题标签 | | `

` | 段落标签 | | `` | 链接标签 | | `` | 图片标签 | | `

` | 块级容器 | | `` | 行内容器 | ## 动手练习 尝试创建一个包含标题、段落和个人简介的简单网页。 """, "Python 简介与环境搭建": """# Python 简介与环境搭建 ## 学习目标 - 了解 Python 语言特点 - 掌握 Python 安装方法 - 学会使用 IDLE 和命令行 ## Python 简介 Python 是一种**解释型、高级、面向对象**的编程语言,由 Guido van Rossum 于 1991 年创建。 ### 为什么选择 Python? 1. **简单易学** - 语法接近自然语言 2. **应用广泛** - Web开发、数据分析、人工智能 3. **社区活跃** - 丰富的第三方库 4. **跨平台** - Windows、macOS、Linux 通用 ## 安装 Python ### Windows 安装步骤 1. 访问 [python.org](https://www.python.org/) 2. 下载最新版本 Python 3.x 3. 安装时勾选 **"Add Python to PATH"** 4. 点击 Install Now ### 验证安装 打开命令行输入: ```bash python --version ``` ## 第一个 Python 程序 ```python print("Hello, World!") print("你好,Python!") ``` ## 动手练习 1. 安装 Python 环境 2. 运行 `print("Hello, World!")` 3. 尝试使用不同的 print 输出 """, "变量与数据类型": """# 变量与数据类型 ## 学习目标 - 理解变量的概念 - 掌握 Python 的基本数据类型 - 学会使用 type() 函数 ## 什么是变量? 变量是用于存储数据的容器。Python 中的变量不需要声明类型,直接赋值即可创建。 ```python name = "小明" # 字符串 age = 25 # 整数 height = 1.75 # 浮点数 is_student = True # 布尔值 ``` ## 基本数据类型 | 类型 | 说明 | 示例 | |------|------|------| | `int` | 整数 | `42`, `-10` | | `float` | 浮点数 | `3.14`, `-0.5` | | `str` | 字符串 | `"Hello"` | | `bool` | 布尔值 | `True`, `False` | | `list` | 列表 | `[1, 2, 3]` | | `dict` | 字典 | `{"name": "Tom"}` | ## 类型转换 ```python x = int("10") # 字符串转整数 y = str(42) # 整数转字符串 z = float("3.14") # 字符串转浮点数 ``` ## 动手练习 1. 创建不同类型的变量 2. 使用 type() 查看变量类型 3. 练习类型转换 """, "条件判断与循环": """# 条件判断与循环 ## 学习目标 - 掌握 if-elif-else 条件判断 - 学会使用 for 循环 - 掌握 while 循环 ## 条件判断 ```python age = 18 if age < 18: print("未成年人") elif age < 60: print("成年人") else: print("老年人") ``` ## for 循环 ```python # 遍历列表 fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit) # 使用 range for i in range(5): print(i) # 输出 0, 1, 2, 3, 4 ``` ## while 循环 ```python count = 0 while count < 5: print(count) count += 1 ``` ## 循环控制 - `break` - 跳出循环 - `continue` - 跳过当前迭代 ## 动手练习 1. 编写程序判断奇偶数 2. 使用循环打印乘法表 3. 计算 1 到 100 的和 """, "函数与模块": """# 函数与模块 ## 学习目标 - 理解函数的作用 - 掌握函数的定义和调用 - 了解模块的使用 ## 定义函数 ```python def greet(name): '''打招呼函数''' return f"你好,{name}!" # 调用函数 message = greet("小明") print(message) # 输出:你好,小明! ``` ## 参数类型 ```python # 默认参数 def power(base, exponent=2): return base ** exponent print(power(3)) # 9 print(power(2, 3)) # 8 ``` ## 导入模块 ```python import math print(math.sqrt(16)) # 4.0 from random import randint print(randint(1, 100)) ``` ## 动手练习 1. 编写计算圆面积的函数 2. 创建判断素数的函数 3. 使用 math 模块进行数学计算 """, "列表与字典": """# 列表与字典 ## 学习目标 - 掌握列表的操作方法 - 理解字典的键值对结构 - 学会遍历和推导式 ## 列表 (List) ```python numbers = [1, 2, 3, 4, 5] numbers.append(6) # 添加元素 numbers.pop() # 移除最后一个 numbers[0] # 索引访问 numbers[1:3] # 切片 ``` ## 字典 (Dict) ```python student = { "name": "小明", "age": 20, "grade": "A" } print(student["name"]) # 访问值 student["age"] = 21 # 修改值 ``` ## 列表推导式 ```python squares = [x**2 for x in range(10)] evens = [x for x in range(10) if x % 2 == 0] ``` ## 动手练习 1. 创建学生成绩列表并排序 2. 使用字典存储书籍信息 3. 使用推导式生成斐波那契数列 """, "面向对象编程": """# 面向对象编程 ## 学习目标 - 理解类和对象的概念 - 掌握类的定义和使用 - 了解继承和多态 ## 定义类 ```python class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): return f"{self.name} 汪汪叫!" # 创建对象 my_dog = Dog("旺财", 3) print(my_dog.bark()) ``` ## 继承 ```python class Animal: def __init__(self, name): self.name = name def speak(self): pass class Cat(Animal): def speak(self): return f"{self.name} 喵喵叫!" ``` ## 动手练习 1. 创建一个 BankAccount 类 2. 实现存款和取款方法 3. 使用继承创建不同类型的账户 """, "文件操作与异常处理": """# 文件操作与异常处理 ## 学习目标 - 掌握文件的读写操作 - 理解异常处理机制 - 学会使用 with 语句 ## 文件读写 ```python # 写入文件 with open("test.txt", "w", encoding="utf-8") as f: f.write("Hello World\n") # 读取文件 with open("test.txt", "r", encoding="utf-8") as f: content = f.read() print(content) ``` ## 异常处理 ```python try: result = 10 / 0 except ZeroDivisionError: print("不能除以零!") finally: print("执行完毕") ``` ## 常见异常类型 | 异常类型 | 说明 | |----------|------| | `ValueError` | 值错误 | | `TypeError` | 类型错误 | | `FileNotFoundError` | 文件不存在 | | `ZeroDivisionError` | 除零错误 | ## 动手练习 1. 读取 CSV 文件并统计数据 2. 使用异常处理保证程序健壮性 3. 实现日志记录功能 """, "常用标准库": """# 常用标准库 ## 学习目标 - 熟悉 Python 标准库 - 掌握 os、datetime、json 等模块 - 学会使用第三方库 ## os 模块 ```python import os print(os.getcwd()) # 当前目录 os.listdir(".") # 列出文件 os.path.exists("test.txt") # 判断文件是否存在 ``` ## datetime 模块 ```python from datetime import datetime now = datetime.now() print(now.strftime("%Y-%m-%d %H:%M:%S")) ``` ## json 模块 ```python import json data = {"name": "Tom", "age": 25} json_str = json.dumps(data, ensure_ascii=False) parsed = json.loads(json_str) ``` ## 动手练习 1. 批量重命名文件 2. 计算日期差值 3. 解析 JSON 配置文件 """, "项目实战:爬虫入门": """# 项目实战:爬虫入门 ## 学习目标 - 了解爬虫的基本原理 - 掌握 requests 库的使用 - 学会使用 BeautifulSoup 解析 HTML ## 什么是爬虫? 爬虫是自动获取网页数据的程序,常用于数据采集、监控等场景。 ## requests 库 ```python import requests url = "https://api.github.com" response = requests.get(url) print(response.status_code) print(response.json()) ``` ## BeautifulSoup 解析 ```python from bs4 import BeautifulSoup html = "

Hello

World

" soup = BeautifulSoup(html, "html.parser") print(soup.h1.text) # Hello ``` ## 注意事项 1. 遵守网站的 robots.txt 2. 控制请求频率 3. 不要爬取敏感数据 ## 动手练习 1. 爬取天气数据显示在控制台 2. 获取豆瓣电影 Top 250 3. 制作每日新闻聚合器 """, "CSS 选择器与样式": """# CSS 选择器与样式 ## 学习目标 - 理解 CSS 的作用 - 掌握 CSS 选择器 - 学会使用常见样式属性 ## CSS 语法 ```css 选择器 { 属性名: 值; 属性名: 值; } ``` ## 选择器类型 | 选择器 | 说明 | 示例 | |--------|------|------| | 元素选择器 | 选中所有该元素 | `p { }` | | 类选择器 | 选中 class 属性 | `.box { }` | | ID 选择器 | 选中 id 属性 | `#header { }` | | 后代选择器 | 选中后代元素 | `div p { }` | ## 常用属性 ```css .box { color: #333; font-size: 16px; background-color: #f5f5f5; padding: 10px; margin: 5px; border: 1px solid #ddd; } ``` ## 动手练习 1. 为之前的 HTML 页面添加样式 2. 使用不同选择器设置样式 3. 实现一个卡片组件 """, "CSS 布局与响应式": """# CSS 布局与响应式 ## 学习目标 - 掌握 Flexbox 布局 - 学会 Grid 布局 - 理解响应式设计 ## Flexbox 布局 ```css .container { display: flex; justify-content: space-between; align-items: center; } ``` ## Grid 布局 ```css .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; } ``` ## 响应式设计 ```css /* 移动端优先 */ .box { width: 100%; } /* 平板 */ @media (min-width: 768px) { .box { width: 50%; } } /* 桌面 */ @media (min-width: 1024px) { .box { width: 33.33%; } } ``` ## 动手练习 1. 使用 Flexbox 实现导航栏 2. 使用 Grid 实现图片画廊 3. 制作响应式登录页面 """, "JavaScript 基础语法": """# JavaScript 基础语法 ## 学习目标 - 了解 JavaScript 的作用 - 掌握变量和数据类型 - 学会函数定义 ## JavaScript 简介 JavaScript 是一种轻量级编程语言,用于网页交互开发。 ## 变量声明 ```javascript let name = "小明"; // 可变变量 const PI = 3.14159; // 常量 // var 已不推荐使用 ``` ## 数据类型 ```javascript let str = "Hello"; // 字符串 let num = 42; // 数字 let bool = true; // 布尔 let arr = [1, 2, 3]; // 数组 let obj = { name: "Tom" }; // 对象 ``` ## 函数定义 ```javascript // 函数声明 function greet(name) { return `你好,${name}!`; } // 箭头函数 const add = (a, b) => a + b; ``` ## 动手练习 1. 声明不同类型的变量 2. 编写计算两数之和的函数 3. 使用箭头函数处理数组 """, "DOM 操作与事件": """# DOM 操作与事件 ## 学习目标 - 理解 DOM 树结构 - 掌握元素选择方法 - 学会事件处理 ## 选择元素 ```javascript document.getElementById("header"); document.querySelector(".title"); document.querySelectorAll("p"); ``` ## 修改内容 ```javascript const el = document.querySelector("h1"); el.textContent = "新标题"; el.style.color = "red"; el.classList.add("active"); ``` ## 事件处理 ```javascript const btn = document.querySelector("button"); btn.addEventListener("click", function() { console.log("按钮被点击了!"); }); ``` ## 常见事件 | 事件 | 说明 | |------|------| | `click` | 点击事件 | | `mouseover` | 鼠标悬停 | | `keydown` | 键盘按下 | | `submit` | 表单提交 | ## 动手练习 1. 实现点击按钮改变背景色 2. 制作图片轮播效果 3. 实现表单验证功能 """, "HTML 表单与多媒体": """# HTML 表单与多媒体 ## 学习目标 - 掌握表单元素 - 学会插入图片和视频 - 理解语义化标签 ## 表单元素 ```html
``` ## 多媒体标签 ```html 图片描述 ``` ## 语义化标签 | 标签 | 说明 | |------|------| | `
` | 页面头部 | | `