资讯详情

资讯详情

SkyLearn在线测验系统深度剖析:3种题型、题目随机化与单次作答限制怎么做

【免费下载链接】SkyLearnThe world’s lightweight learning management system. Using django web framework. Basic staff like course add and drop, grade and assessment result management, online quiz, report generator, student and lecturers management, dashboard, and etc.项目地址https://gitcode.com/gh_mirrors/sk/SkyLearn点击查看免费下载SkyLearn 是一款基于 Django 的轻量级开源学习管理系统LMS其在线测验模块内置了完整考核能力3 种题型、两级题目随机化和单次作答限制开箱即用。本文带你快速看懂这些功能在quiz模块里的实现思路。一、SkyLearn 测验模块全景核心文件一览 SkyLearn 的测验功能集中在 quiz/ 目录下围绕测验 → 题目 → 作答 → 评分这条主线组织核心文件如下表文件职责quiz/models.pyQuiz、Question3 种题型、Choice、Sitting、Progress数据模型quiz/views.py测验创建、学生答题QuizTake、教师批改视图quiz/forms.py答题表单与选择题选项校验templates/quiz/question.html逐题作答页面模板quiz/urls.py测验路由定义下图是 SkyLearn 管理后台界面可以看到测验记录Complete Exams、Quiz Progress Rec在侧边栏中与课程、成绩模块并列是系统考核体系的重要一环二、3种题型怎么做多表继承建模 题目基于 quiz/models.py 中的Question基类通过多表继承InheritanceManager派生出两种具体题型配合基类能力共支撑 3 种用法基类Questionquiz多对多关系、content题干、explanation答案解析、figure配图字段所有题型共享。选择题MCQuestionL402-L442每个选项是独立的Choice记录文本 correct布尔标记答题时调用check_if_correct直接比对选项是否为正确答案。True/False 判断题无需单独模型——把一道MCQuestion只配置 True/False 两个选项即可系统天然按单选逻辑判分。问答题EssayQuestionL468-L483check_if_correct固定返回False表示需要人工批改作答内容通过EssayForm的文本域收集。表单层做了严格兜底quiz/forms.py 中的MCQuestionFormSet会校验至少两个选项、且恰好一个选项标记为正确从源头保证题目质量学生作答表单则按题型动态切换——选择题用QuestionForm单选按钮问答题自动换成EssayForm见 quiz/views.py 的get_form_class。三、题目随机化怎么做两级乱序机制 SkyLearn 的随机化分两层分别控制题目顺序和选项顺序防止学生互相抄答案1. 题目级乱序random_order开关在Quiz模型上勾选random_orderL59-L63后学生每次进入测验创建作答会话Sitting时系统会用order_by(?)对题目随机洗牌并固化到本次会话中SittingManager.new_sitting不同学生拿到不同的题目顺序顺序在学生本次作答期间保持不变中途退出再续答时不会跳题。2. 选项级乱序choice_order三档MCQuestion的choice_order字段支持三种模式L424-L430random选项每次随机排列默认content按选项文本排序none保持录入顺序。两层组合后即使题目相同每个学生看到的试卷呈现也完全不同——这就是防抄袭的关键设计。四、单次作答限制怎么做Sitting 会话拦截 单次作答限制由Quiz.single_attempt开关驱动逻辑分三步强制存档Quiz.save()中一旦勾选单次作答会自动将exam_paper置为TrueL107-L114确保该次成绩被持久保存用于后续查看与批改。入口拦截进入答题页时SittingManager.user_sitting会先检查该用户是否已有已完成的会话若有则直接返回FalseL218-L232视图层随即提示 You have already completed this quiz. Only one attempt is permitted. 并跳回测验列表quiz/views.py。断点续答若已有未完成会话则直接复用、从中断处继续——学生可以放心退出再回来但不消耗第二次机会。作为对照非考试类测验未开exam_paper完成作答后会直接删除临时会话记录final_result_user只保留分数统计进一步减小数据冗余。五、作答与判分流程逐题推进、即时计分 ⏱️QuizTake视图quiz/views.py实现了完整的答题生命周期逐题展示Sitting用question_list队列保存题目顺序答完一道自动弹出下一题首题会弹窗提示提交后不可回退见 question.html即时计分答对调用add_to_score答错记录进incorrect_questions同时更新用户维度累计成绩Progress模型两种反馈模式answers_at_end关闭时每答完一题即展示对错与解析开启则所有答案统一在结算页集中呈现及格判定结算页按pass_mark默认 50%自动判定通过/未通过并给出对应提示语。六、批改与成绩追踪问答题闭环 ✍️人工批改教师通过QuizMarkingList/QuizMarkingDetail视图筛选已完成的作答记录对问答题逐题切换正确/错误状态即可实时调整得分quiz/views.py成绩沉淀Progress模型按测验记录累计得分学生可在 Progress 页面查看历次考试成绩与通过率多语言支持题目、选项均带翻译字段见 quiz/migrations/配合 locale/ 目录支持俄语、法语、西班牙语等界面切换。七、小结这套设计值得借鉴的 3 点能力实现要点设计亮点3 种题型多表继承 策略方法check_if_correct判断题零成本复用选择题问答题留好人机分工题目随机化random_order洗牌 choice_order三档顺序固化在会话中续答不乱单次作答single_attempt强制存档 会话入口拦截未完成可续答已完成硬拦截SkyLearn 用最精简的模型1 个Sitting 1 个Progress就撑起了从组卷、防抄袭到人工批改的完整闭环非常适合作为 Django LMS 项目的学习范本。赞分享【免费下载链接】SkyLearnThe world’s lightweight learning management system. Using django web framework. Basic staff like course add and drop, grade and assessment result management, online quiz, report generator, student and lecturers management, dashboard, and etc.项目地址https://gitcode.com/gh_mirrors/sk/SkyLearn点击查看免费下载相关推荐createSlicer与getSubset是怎么工作的redux-localstorage状态子集筛选机制深度剖析createSlicer与getSubset是怎么工作的redux localstorage状态子集筛选机制深度剖析 redux localstorage 是实验中断怎么办BenchMARL日志、检查点与断点恢复机制深度剖析实验中断怎么办BenchMARL日志、检查点与断点恢复机制深度剖析 BenchMARL 是一个多智能体强化学习MARL基准测试库让你能基于统一、可复现的Protobuf.js 可视化二进制数据怎么变成看得懂的图三个真实场景Protobuf.js 可视化二进制数据怎么变成看得懂的图三个真实场景 调试时盯着控制台里的一串十六进制你得对着 .proto 文件一个个字段查。prot后端开发工具上一篇practical-aspnetcore 实战用 AddCookie() 简化 Cookie 认证与授权最小 API 完整示例下一篇Nexent D1-D5 分层用例设计规范从单元到风险验证的形式化测试资产体系创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →