完全依托Deepseek帮我开发了这款简单的英语学习网站
·
小熊英语学习平台 - 项目完整分析文档
我是一名编程技术博主,同时也是一名Python老师。在日常教学中,我为孩子们进行Python技术内容教学,帮助同学们更好地掌握编程技能。
最近,有几位学生的家长和我交流,提到孩子的英语成绩不太理想。作为一名教育工作者,我深知英语能力对于日常以及编程学习的重要性——除了在学校文化课外,很多优质的技术文档、开源项目和编程资源都是英文的。于是,我萌生了开发这个英语学习网站的想法。
这个平台专为我的编程学生们打造,旨在通过系统化的学习路径和有趣的互动方式,帮助大家在学习编程的同时,同步提升英语水平。网站包含单词学习、打字练习、翻译挑战、句子训练和每日阅读等多个模块,希望能为同学们打开一扇通往英语世界的大门。
一、项目概述
1.1 项目架构
EnglishiLearnning/
├── EnglishiLearnning/ # Django项目配置
│ ├── settings.py # 配置文件(MySQL、模板、静态文件)
│ ├── urls.py # URL路由配置
│ └── wsgi.py # WSGI服务器入口
├── MyApp/ # 核心应用模块
│ ├── models.py # 数据库模型定义
│ ├── views.py # 业务逻辑与API接口
│ ├── admin.py # 后台管理配置
│ └── migrations/ # 数据库迁移文件
├── templates/ # 前端模板(7个页面)
├── static/ # 静态资源(图片等)
└── manage.py # Django管理命令入口
1.2 技术栈
| 层次 | 技术 | 版本 |
|---|---|---|
| 后端框架 | Django | 5.0 |
| 数据库 | MySQL | 5.7+ |
| 前端框架 | 原生HTML/CSS/JS | - |
| 图标库 | Font Awesome | 6.4.0 |
| 后台管理 | SimpleUI | - |
二、功能模块详解
2.1 模块总览
| 模块 | 路径 | 功能描述 | 状态 |
|---|---|---|---|
| 单词汇总 | /words/ |
单词浏览、分类、收藏、标记已会 | 已完成 |
| 打字练习 | /typing-game/ |
单词打字游戏、排行榜 | 已完成 |
| 单词翻译官 | /translation-game/ |
中文翻译英文游戏 | 已完成 |
| 句子训练 | /sentence/ |
句子填空练习、学习统计 | 已完成 |
| 每日一读 | /week_read/ |
英文文章阅读、评论互动 | 已完成 |
| 个人中心 | /profile/ |
用户信息、学习数据汇总 | 已完成 |
| 用户认证 | /login/ /register/ |
用户注册、登录、登出 | 已完成 |
2.2 模块1:单词汇总
功能说明:浏览单词卡片、按分类筛选、搜索单词、收藏/标记已会
核心代码(MyApp/views.py:247-317):
def word_list(request):
# 获取分类和搜索参数
categories = WordCategory.objects.all()
category_id = request.GET.get('category')
search_query = request.GET.get('search', '')
# 过滤单词
words = Word.objects.all()
if category_id and category_id != 'all':
words = words.filter(category_id=category_id)
if search_query:
words = words.filter(
Q(word_content__icontains=search_query) |
Q(chinese_definition__icontains=search_query)
)
# 分页处理
paginator = Paginator(words, 20)
page_obj = paginator.get_page(request.GET.get('page', 1))
return render(request, 'word_cards.html', {
'words': page_obj,
'categories': categories,
'user_is_authenticated': True if request.session.get('user_id') else False
})

2.3 模块2:打字练习
功能说明:随机单词打字游戏,记录得分、准确率、速度
核心API(MyApp/views.py:827-870):
@csrf_exempt
def save_game_record(request):
user_id = request.session.get('user_id')
if not user_id:
return JsonResponse({'success': False, 'message': '请先登录'})
data = json.loads(request.body)
record = TypingGameRecord(
user=User.objects.get(id=user_id),
score=data.get('score', 0),
hits=data.get('hits', 0),
total_words=data.get('total_words', 0),
game_duration=data.get('game_duration', 0)
)
record.save() # 自动计算准确率和WPM
return JsonResponse({'success': True})


2.4 模块3:单词翻译官
功能说明:中文提示选择英文单词,随机20题,实时反馈
核心逻辑(MyApp/views.py:985-1069):
def get_translation_questions(request):
# 随机选择20个单词
all_words = list(Word.objects.all().select_related('category'))
selected_words = random.sample(all_words, min(20, len(all_words)))
questions = []
for word in selected_words:
# 生成5个干扰项
distractors = random.sample(
[w for w in all_words if w.id != word.id],
min(5, len(all_words) - 1)
)
# 打乱选项顺序
options = [word] + distractors
random.shuffle(options)
questions.append({
'question_id': word.id,
'chinese_prompt': word.chinese_definition,
'correct_answer': word.word_content,
'options': options
})
# 存储到session用于验证
request.session['game_questions'] = questions
return JsonResponse({'success': True, 'questions': questions})



2.5 模块4:句子训练
功能说明:英语句子挖空填空练习,记录答题统计
核心代码(MyApp/views.py:1510-1688):
@csrf_exempt
def check_sentence_answer(request):
data = json.loads(request.body)
sentence_id = data.get('sentence_id')
selected_answer = data.get('selected_answer')
# 验证答案
sentence = get_object_or_404(SentenceExercise, id=sentence_id)
is_correct = (selected_answer == sentence.correct_answer)
# 更新用户统计(登录用户)
user_id = request.session.get('user_id')
if user_id:
user_stats, _ = UserLearningStats.objects.get_or_create(user_id=user_id)
user_stats.total_sentences_attempted += 1
if is_correct:
user_stats.correct_sentences += 1
user_stats.current_streak += 1
else:
user_stats.current_streak = 0
user_stats.save()
return JsonResponse({
'success': True,
'is_correct': is_correct,
'correct_answer': sentence.correct_answer
})



2.6 模块5:每日一读
功能说明:精选英文文章阅读、中文翻译对照、评论互动
核心代码(MyApp/views.py:1886-1961):
@csrf_exempt
def get_articles(request):
# 获取筛选参数
category_id = request.GET.get('category')
difficulty = request.GET.get('difficulty')
# 过滤文章
articles = Article.objects.filter(is_published=True)
if category_id and category_id != 'all':
articles = articles.filter(category_id=category_id)
if difficulty and difficulty != 'all':
articles = articles.filter(difficulty=difficulty)
# 分页处理
paginator = Paginator(articles, 10)
page_obj = paginator.get_page(request.GET.get('page', 1))
return JsonResponse({
'success': True,
'articles': [{'id': a.id, 'title': a.title, ...} for a in page_obj],
'total_pages': paginator.num_pages
})


2.7 模块6:个人中心
功能说明:用户信息展示、学习统计汇总、错误记录查看




2.8 模块7:用户认证
功能说明:注册、登录、登出功能
核心代码(MyApp/views.py:21-70):
@csrf_exempt
def login_user(request):
data = json.loads(request.body)
username = data.get('username', '').strip()
try:
user = User.objects.get(username=username)
if not user.is_active:
return JsonResponse({'success': False, 'message': '账户已被禁用'})
# 存储到session
request.session['user_id'] = user.id
request.session['username'] = user.username
return JsonResponse({
'success': True,
'user_id': user.id,
'username': user.username
})
except User.DoesNotExist:
return JsonResponse({'success': False, 'message': '用户名不存在'})


三、数据库模型关系
3.1 ER图结构
┌───────────┐ ┌──────────────┐ ┌─────────┐
│ User │──────│UserWordFavorite│──────│ Word │
│ (用户) │1:N │ (用户单词收藏) │N:1 │ (单词) │
└───────────┘ └──────────────┘ └────┬────┘
│ │
│ │N:1
│ ┌───────────────┐ │
└──────│UserWordMastered│────────────────┘
│ (用户已会单词) │
└───────────────┘
┌───────────┐ ┌───────────────┐ ┌───────────────┐
│ User │──────│UserLearningStats│──────│SentenceExercise│
│ (用户) │1:1 │ (用户学习统计) │ │ (句子训练题目) │
└───────────┘ └───────────────┘ └───────────────┘
│ │
│1:N │N:1
│ │
└──────┬────────────────────────────────────┘
│
┌──────┴──────┐
│UserSentenceProgress│
│ (句子训练进度) │
└───────────────────┘
┌───────────┐ ┌───────────────────┐ ┌──────────┐
│ User │──────│UserReadingProgress│──────│ Article │
│ (用户) │1:N │ (用户阅读进度) │N:1 │ (文章) │
└───────────┘ └───────────────────┘ └────┬─────┘
│ │
│1:1 │1:N
│ │
└──────┬───────────────────────────────────────┘
│
┌──────┴────────┐
│UserReadingStat│
│ (用户阅读统计)│
└───────────────┘
3.2 核心模型字段
| 模型 | 关键字段 | 说明 |
|---|---|---|
| User | username, email, gender, age, city | 用户基本信息 |
| Word | word_content, chinese_definition, english_example, difficulty_level | 单词数据 |
| WordCategory | category_name, icon, icon_color | 单词分类 |
| UserWordFavorite | user_id, word_id | 用户收藏关系 |
| UserWordMastered | user_id, word_id | 用户已会关系 |
| TypingGameRecord | user_id, score, hits, accuracy, words_per_minute | 打字游戏记录 |
| SentenceExercise | english_sentence, translation, correct_answer, options | 句子训练题目 |
| UserLearningStats | total_sentences_attempted, correct_sentences, current_streak | 句子训练统计 |
| Article | title, english_content, chinese_translation, difficulty | 阅读文章 |
| ArticleComment | user_id, article_id, content | 文章评论 |
| UserReadingStat | total_articles_read, current_streak, total_words_learned | 阅读统计 |
四、API接口汇总
4.1 用户认证接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/register/ |
POST | 用户注册 |
/api/login/ |
POST | 用户登录 |
/api/logout/ |
POST | 用户登出 |
/api/user/ |
GET | 获取当前用户 |
4.2 单词相关接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/words/categories/ |
GET | 获取单词分类 |
/api/words/all/ |
GET | 获取所有单词 |
/api/words/category/{id}/ |
GET | 获取分类单词 |
/api/words/search/ |
GET | 搜索单词 |
/api/words/favorite-toggle/ |
POST | 收藏/取消收藏 |
/api/words/mastered-toggle/ |
POST | 标记/取消已会 |
4.3 打字游戏接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/game/words/ |
GET | 获取游戏单词 |
/api/game/save-record/ |
POST | 保存游戏记录 |
/api/game/stats/ |
GET | 获取用户统计 |
/api/game/leaderboard/ |
GET | 获取排行榜 |
4.4 翻译游戏接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/translation-game/questions/ |
GET | 获取题目列表 |
/api/translation-game/submit/ |
POST | 提交答案 |
/api/translation-game/result/ |
GET | 获取结果 |
4.5 句子训练接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/sentences/ |
GET | 获取句子题目 |
/api/sentences/check-answer/ |
POST | 检查答案 |
/api/sentences/user-stats/ |
GET | 获取用户统计 |
4.6 每日阅读接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/articles/ |
GET | 获取文章列表 |
/api/articles/{id}/ |
GET | 获取文章详情 |
/api/article-categories/ |
GET | 获取文章分类 |
/api/mark-article-completed/ |
POST | 标记已读 |
/api/articles/{id}/comments/ |
GET | 获取评论 |
/api/articles/comments/ |
POST | 发表评论 |
/api/user-reading-stats/ |
GET | 获取阅读统计 |
4.7 个人中心接口
| 接口 | 方法 | 功能 |
|---|---|---|
/api/user/profile/ |
GET | 获取用户信息 |
/api/user/update/ |
POST | 更新用户信息 |
/api/user/errors/ |
GET | 获取错误记录 |
五、模板文件结构
| 模板文件 | 对应页面 | 功能描述 |
|---|---|---|
word_cards.html |
单词汇总 | 单词卡片展示、分类筛选、搜索 |
keyboard_practice.html |
打字练习 | 打字游戏界面、计时器、得分显示 |
word_translate.html |
单词翻译官 | 翻译题目展示、选项选择、结果反馈 |
sentence.html |
句子训练 | 句子填空、选项选择、学习统计 |
week_read.html |
每日一读 | 文章展示、评论区、阅读统计 |
profile.html |
个人中心 | 用户信息、学习数据汇总 |
login.html |
登录页面 | 登录表单 |
register.html |
注册页面 | 注册表单 |
六、配置文件关键信息
6.1 数据库配置(settings.py:79-93)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'EnglishLearning',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
6.2 静态文件配置(settings.py:130-132)
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
七、截图位置汇总表
| 截图编号 | 对应模块 | 页面路径 | 主要内容 |
|---|---|---|---|
[截图1-单词汇总页面] |
单词汇总 | /words/ |
单词卡片网格、分类导航、搜索框 |
[截图2-打字练习页面] |
打字练习 | /typing-game/ |
打字输入区、计时器、得分显示 |
[截图3-单词翻译官页面] |
单词翻译官 | /translation-game/ |
中文提示、选项按钮、答题进度 |
[截图4-句子训练页面] |
句子训练 | /sentence/ |
挖空句子、选项、统计面板 |
[截图5-每日一读页面] |
每日一读 | /week_read/ |
文章内容、翻译区、评论区 |
[截图6-个人中心页面] |
个人中心 | /profile/ |
用户信息、学习统计图表 |
[截图7-登录/注册页面] |
用户认证 | /login/ /register/ |
登录/注册表单 |
八、项目特色亮点
- 完整的学习闭环:单词学习 → 句子训练 → 文章阅读,循序渐进
- 游戏化学习:打字游戏、翻译游戏、句子填空,增加趣味性
- 用户数据追踪:收藏、已会标记、学习统计、连续打卡
- 互动社区:文章评论功能,增强用户粘性
- 响应式设计:适配移动端和桌面端
- 励志激励系统:答题完成后显示励志句子
九、部署说明
9.1 环境要求
- Python 3.10+
- Django 5.0+
- MySQL 8.0+
- 依赖安装:
pip install django simpleui mysqlclient
9.2 启动步骤
# 1. 创建数据库
mysql -u root -p -e "CREATE DATABASE EnglishLearning CHARACTER SET utf8mb4;"
# 2. 执行数据库迁移
python manage.py makemigrations
python manage.py migrate
# 3. 启动开发服务器
python manage.py runserver 0.0.0.0:8000
9.3 访问地址
- 前端首页:
http://localhost:8000/ - 后台管理:
http://localhost:8000/admin/
以上是小熊英语学习平台的完整项目分析,包含架构设计、核心代码、数据库模型、API接口等关键信息。如需深入了解某个模块的具体实现,可以进一步探讨。
更多推荐


所有评论(0)