作业管理文档
学管系统
问题
新建习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_exercise/ |
新建习题 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| title |
题目文本描述 |
YES |
|
| photo |
题目图片描述 |
YES |
|
| analysis |
题目分析描述 |
YES |
|
| question_type |
题目类型 |
YES |
|
| course_category |
题目所属直播课分类 |
NO |
|
| question_category |
题目所属的问题分类pk |
NO |
|
| difficult_grade |
难易程度(simple/harder) |
NO |
simple |
| remark |
备注(可以对题目的额外补充说明) |
NO |
|
| options_data |
选项数据组 |
YES |
|
| right_options |
选项数据对应的子选项组(即连线题中左选项对应的右选项组) |
YES |
|
question_type : choice 或 blank 或 connection 或 operation
course_category : 直播课分类的 pk
question_category:问题分类的 pk
Request Data
选择题 示例{ "title":"问题的题目描述1111", "photo":"问题的图片描述1111", "analysis":"题目分析111", "question_type":"choice", "course_category":2, "question_category":2, "options_data":[ { "number":"A", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":false }, { "number":"B", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":false }, { "number":"C", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":true } ], "remark":""}填空题 示例{ "title":"问题的题目描述1111", "photo":"https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "analysis":"题目分析111", "question_type":"blank", "course_category":2, "options_data":[ { "title":"填空题答案1", "is_answer":true }, { "title":"填空题答案2", "is_answer":true } ]}连线题 示例(暂时废弃){ "title":"问题的题目描述1111", "photo":"问题的图片描述1111", "analysis":"题目分析111", "question_type":"connection", "course_category":2, "options_data":[ { "number":"A", "title":"左边选项 1", "photo":"左选项图片描述", "right_options":[ { "number":"1", "title":"右边选项 1", "photo":"左选项图片描述" }, { "number":"2", "title":"右边选项 2", "photo":"左选项图片描述" } ] }, { "number":"B", "title":"左边选项2", "photo":"左选项图片描述", "right_options":[ //选项数据对应的子选项组(即连线题中左选项对应的右选项组) { "number":"3", "title":"右边选项 3", "photo":"左选项图片描述" } ] } ]}连线题 示例2{ "title":"问题的题目描述1111", "photo":"问题的图片描述1111", "analysis":"题目分析111", "question_type":"connection", "course_category":2, "options_data":[ { "number":"A", "title":"左边选项 1", "photo":"左选项图片描述", "option_type":"left" }, { "number":"1", "title":"右边选项 1", "photo":"左选项图片描述", "option_type":"right" }, { "number":"B", "title":"左边选项2", "photo":"左选项图片描述", "option_type":"left" }, { "number":"2", "title":"右边选项 2", "photo":"左选项图片描述", "option_type":"right" } ], "match":{ "0":[1], "2":[1,3] } //这里反应的是各选项之间的对应关系, 0:[1] 表示options_data 数组的第 1 个元素对应的答案是第 2个元素, 2:[1,3] 表示options_data数组中的第 3 个元素对应的答案是第 2 个和第 4 个元素。}
Response
选择题{ "pk": 10, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 10 }, { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 }, { "pk": 5, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ 83 ]}填空题{ "pk": 39, "title": "问题的题目描述1111", "photo": "https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "question_type": "blank", "analysis": "题目分析111", "options": [ { "pk": 87, "number": "", "title": "填空题答案2", "photo": "", "is_answer": true, "question": 39, "option_type": "middle", "match_options": null }, { "pk": 86, "number": "", "title": "填空题答案1", "photo": "", "is_answer": true, "question": 39, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ "填空题答案1", "填空题答案2" ]}连线题{ "pk": 27, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "connection", "analysis": "题目分析111", "options": [ { "pk": 46, "number": "B", "title": "左边选项2", "photo": "", "is_answer": false, "question": 27, "option_type": "left", "match_options": "45" }, { "pk": 45, "number": "3", "title": "右边选项 3", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null }, { "pk": 44, "number": "A", "title": "左边选项 1", "photo": "", "is_answer": false, "question": 27, "option_type": "left", "match_options": "42,43" }, { "pk": 43, "number": "2", "title": "右边选项 2", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null }, { "pk": 42, "number": "1", "title": "右边选项 1", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": { "78": [ 76, 77 ], "80": [ 79 ] }}
修改习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/update_exercise/${pk}/ |
修改习题 |
YES |
pk: 问题的 pk
Request Parameters
| Name |
Description |
Required |
Default |
| title |
题目文本描述 |
YES |
|
| photo |
题目图片描述 |
YES |
|
| analysis |
题目分析描述 |
YES |
|
| question_type |
题目类型 |
YES |
|
| course_category |
题目所属直播课分类 |
YES |
|
| options_data |
选项数据组 |
YES |
|
question_type : choice 或 blank 或 connection
course_category : 直播课分类的 pk
Request Data
选择题 示例{ "title":"问题的题目描述1111", "photo":"问题的图片描述1111", "analysis":"题目分析111", "question_type":"choice", "course_category":2, "options_data":[ { "pk":143, "number":"A", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":false }, { "pk":144, "number":"B", "title":"选项文本描2述", "photo":"选项图片描述", "is_answer":true }, { "pk":145, "number":"C", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":false } ]}填空题 示例{ "title":"问题的题目描述1111", "photo":"https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "analysis":"题目分析111", "question_type":"blank", "course_category":2, "options_data":[ { "pk":146, "title":"填空题答案11", "is_answer":true }, { "pk":147, "title":"填空题答案22", "is_answer":true } ]}连线题 示例{ "title":"问题的题目描述1111", "photo":"问题的图片描述1111", "analysis":"题目分析111", "question_type":"connection", "course_category":2, "options_data":[ { "pk":148, "number":"A", "title":"左边选项 1", "photo":"左选项图片描述", "option_type":"left" }, { "pk":149, "number":"1", "title":"右边选项 1", "photo":"左选项图片描述", "option_type":"right" }, { "pk":150, "number":"B", "title":"左边选项2", "photo":"左选项图片描述", "option_type":"left" }, { "pk":151, "number":"2", "title":"右边选项 2", "photo":"左选项图片描述", "option_type":"right" } ], "match":{ "0":[3], "2":[1,3] }}
Response
选择题{ "pk": 10, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 10 }, { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 }, { "pk": 5, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ 83 ]}填空题{ "pk": 39, "title": "问题的题目描述1111", "photo": "https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "question_type": "blank", "analysis": "题目分析111", "options": [ { "pk": 87, "number": "", "title": "填空题答案2", "photo": "", "is_answer": true, "question": 39, "option_type": "middle", "match_options": null }, { "pk": 86, "number": "", "title": "填空题答案1", "photo": "", "is_answer": true, "question": 39, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ "填空题答案1", "填空题答案2" ]}连线题{ "pk": 58, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "connection", "analysis": "题目分析111", "options": [ { "pk": 151, "number": "2", "title": "右边选项 2", "photo": "左选项图片描述", "is_answer": false, "question": 58, "option_type": "right", "match_options": null }, { "pk": 150, "number": "B", "title": "左边选项2", "photo": "左选项图片描述", "is_answer": false, "question": 58, "option_type": "left", "match_options": "149,151" }, { "pk": 149, "number": "1", "title": "右边选项 1", "photo": "左选项图片描述", "is_answer": false, "question": 58, "option_type": "right", "match_options": null }, { "pk": 148, "number": "A", "title": "左边选项 1", "photo": "左选项图片描述", "is_answer": false, "question": 58, "option_type": "left", "match_options": "151" } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": { "148": [ 151 ], "150": [ 149, 151 ] }}
删除习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| DELETE |
/server/job_management/delete_exercise/${pk}/ |
删除习题 |
YES |
Response
状态码200, {status:0, message:''}
新建题目
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_question/ |
新建题目 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| title |
题目文本描述 |
YES |
|
| photo |
题目图片描述 |
YES |
|
| analysis |
题目分析描述 |
YES |
|
| question_type |
题目类型 |
YES |
|
| course_category |
题目所属直播课分类 |
YES |
|
question_type : choice 或 blank 或 connection
course_category : 直播课分类的 pk
Request Data
{ "title":"问题的题目描述", "photo":"问题的图片描述", "analysis":"题目分析", "question_type":"choice", "course_category":2}
Response
{ "pk": 30, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }}
修改题目
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/update_question/${pk}/ |
修改题目 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| title |
题目文本描述 |
YES |
|
| photo |
题目图片描述 |
YES |
|
| analysis |
题目分析描述 |
YES |
|
| question_type |
题目类型 |
YES |
|
| course_category |
题目所属直播课分类 |
YES |
|
question_type : choice 或 blank 或 connection
course_category : 直播课分类的 pk
Request Data
{ "title":"问题的题目描述", "photo":"问题的图片描述", "analysis":"题目分析", "question_type":"choice", "course_category":2}
Response
{ "pk": 30, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }}
获取题目详情
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/detail_question/${pk}/ |
题目详情 |
YES |
Response
{ "pk": 1, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [ { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }}
获取题目列表、过滤/搜索习题列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_question/ |
题目列表 |
YES |
按条件过滤列表释义如下 :
course_category(直播课分类 pk)示例: /server/job_management/list_question/?course_category=2
question_type(习题类型)示例:
/server/job_management/list_question/?question_type=choice
question_category(问题分类 pk)示例:
/server/job_management/list_question/?question_category=2
difficult_grade(题目难易程度)示例:
/server/job_management/list_question/?difficult_grade=simple 或 /server/job_management/list_question/?difficult_grade=harder
按问题 title 搜索列表释义如下:
search 示例:/server/job_management/list_question/?search=问题的题目描
Response
{ "count": 1, "next": null, "previous": null, "results": [ { "pk": 30, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } } ]}
选项
新建选项
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_option/ |
新建选项 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| title |
选项文本描述 |
YES |
|
| photo |
选项图片描述 |
YES |
|
| number |
选项编号如A |
YES |
|
| is_answer |
该选项是否被设置为正确答案 |
YES |
False |
| question |
题目pk |
YES |
|
| option_type |
选项类型 |
YES |
middle |
| match_options |
选项下的选项的 pk 组(左选项对应的右选项组) |
YES |
|
option_type 选型类型, left(左)、right(右)、middle(中间)
Request Data
{ "question":1, "number":"C", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":true}
Response
{ "pk": 3, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 1}
修改选项
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/update_option/${pk}/ |
修改选项 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| title |
选项文本描述 |
YES |
|
| photo |
选项图片描述 |
YES |
|
| number |
选项编号如A |
YES |
|
| is_answer |
该选项是否被设置为正确答案 |
YES |
False |
| question |
题目pk |
YES |
|
Request Data
{ "question":1, "number":"C", "title":"选项文本描述", "photo":"选项图片描述", "is_answer":true}
Response
{ "pk": 3, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 1}
获取选项详情
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/detail_option/${pk}/ |
选项详情 |
YES |
Response
{ "pk": 3, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 1}
删除选项
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| DELETE |
/server/job_management/delete_option/${pk}/ |
删除选项 |
YES |
Response
状态码204, 无返回数据
获取选项列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_option/ |
选项列表 |
YES |
Response
{ "count": 3, "next": null, "previous": null, "results": [ { "pk": 3, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 1 }, { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 } ]}
试卷
新建试卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_exam/ |
新建试卷 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| name |
试卷的名称 |
YES |
|
| course_category |
试卷所属直播课分类的 pk |
YES |
|
| questions_data |
试卷所包含的问题的 pk 组 |
YES |
|
| exam_category |
试卷所属的问题分类 pk |
NO |
|
| practice_link |
练习课链接 |
NO |
|
| is_countdown |
是否含有倒计时功能 |
NO |
|
| is_hide |
是否隐藏试卷 |
NO |
|
| duration |
倒计时时长(秒) |
NO |
|
| tag |
试卷标记(学管 management,月赛game) |
NO |
management |
Request Data
{ "course_category":2, "name":"cw_test_01", "questions_data":[34,33,35], "practice_link":"https://www.coding61.com/html/live-lesson/live.html?pk=1926", "is_hide":true, "is_countdown":true}
Response
question_ids 习题id 组,前端可以根据这个来调整试卷中习题的顺序
{ "pk": 14, "course_category": "编程创作", "name": "cw_test_01", "is_hide":true, "is_countdown":true, "questions": [ { "pk": 35, "title": "问题的题目描述1111", "photo": "https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "question_type": "blank", "analysis": "题目分析111", "options": [ { "pk": 81, "number": "", "title": "填空题答案2", "photo": "", "is_answer": true, "question": 35, "option_type": "middle", "match_options": null }, { "pk": 80, "number": "", "title": "填空题答案1", "photo": "", "is_answer": true, "question": 35, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ "填空题答案1", "填空题答案2" ] }, { "pk": 34, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 79, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 34, "option_type": "middle", "match_options": null }, { "pk": 78, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 34, "option_type": "middle", "match_options": null }, { "pk": 77, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 34, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": [ 79 ] }, { "pk": 33, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "connection", "analysis": "题目分析111", "options": [ { "pk": 76, "number": "B", "title": "左边选项2", "photo": "", "is_answer": false, "question": 33, "option_type": "left", "match_options": "75" }, { "pk": 75, "number": "3", "title": "右边选项 3", "photo": "", "is_answer": false, "question": 33, "option_type": "right", "match_options": null }, { "pk": 74, "number": "A", "title": "左边选项 1", "photo": "", "is_answer": false, "question": 33, "option_type": "left", "match_options": "72,73" }, { "pk": 73, "number": "2", "title": "右边选项 2", "photo": "", "is_answer": false, "question": 33, "option_type": "right", "match_options": null }, { "pk": 72, "number": "1", "title": "右边选项 1", "photo": "", "is_answer": false, "question": 33, "option_type": "right", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" }, "answers": { "74": [ 72, 73 ], "76": [ 75 ] } } ], "question_ids": "34,33,35", "practice_link": "https://www.coding61.com/html/live-lesson/live.html?pk=1926"}
修改试卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/update_exam/${pk}/ |
修改试卷 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| name |
试卷的名称 |
YES |
|
| course_category |
试卷所属直播课分类pk |
YES |
|
| question_ids |
试卷中已有习题的 id 组的最终排序 |
YES |
|
Request Data
{ "course_category":2, "name":"试卷的名称2", "question_ids":"8,1"}
Response
{ "pk": 2, "course_category": "编程创作", "name": "试卷的名称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, { "pk": 1, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [ { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } } ]}
添加试卷中习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/add_exercise_exam/${pk}/ |
试卷追加习题 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| questions_data |
习题的pk组 |
YES |
|
Request Data
{ "questions_data":[1]}
Response
{ "pk": 2, "course_category": "编程创作", "name": "试卷的名称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, { "pk": 1, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [ { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } } ], "question_ids": "8,1"}
移除试卷中习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/remove_exercise_exam/${pk}/ |
试卷移除习题 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| questions_data |
习题的pk组 |
YES |
|
Request Data
{ "questions_data":[1]}
Response
{ "pk": 2, "course_category": "编程创作", "name": "试卷的名称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } } ], "question_ids": "8"}
综合修改试卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PATCH |
/server/job_management/exam_update/${pk}/ |
综合修改试卷 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| name |
试卷的名称 |
NO |
|
| course_category |
试卷所属直播课分类pk |
NO |
|
| exam_category |
试卷所属的问题分类 pk |
NO |
|
| question_ids |
试卷中已有习题的 id 组的最终排序 |
NO |
|
| add_exercises |
试卷新增习题的 pk 组 |
NO |
|
| remove_exercises |
试卷中移除习题的 pk 组 |
NO |
|
| tag |
试卷标记(学管 management,月赛game) |
NO |
|
question_ids, 前端可以根据此字段,来排序返回的习题列表,以上字段都是可选的,需要注意的时,如果不需要更改的项,要么不传,要么传原来的值
Request Data
{ "course_category":2, "name":"试卷的名称2", "question_ids":"8,1", "add_exercises":[], "remove_exercises":[1]}
Response
{ "status": -4, "message": "存在不在白名单用户的答题记录,因此不能对试卷习题增删操作", "unknown_users": [ "15201052252" ]}{ "pk": 2, "course_category": "编程创作", "name": "试卷的名称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "answers": [] }, { "pk": 1, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [ { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "answers": [] } ], "question_ids": "8,1", "practice_link": null}
获取试卷详情
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/detail_exam/${pk}/ |
试卷详情 |
YES |
Response
{ "pk": 3, "course_category": "编程创作", "name": "试卷的名称", "questions": []}
删除试卷(暂时不用前端)
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| DELETE |
/server/job_management/delete_exam/${pk}/ |
删除试卷 |
YES |
Response
状态码204, 无返回数据
删除试卷的试卷记录
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/exam_record_delete/${pk}/ |
删除试卷的试卷记录 |
YES |
Response
{ "pk": 2, "course_category": "编程创作", "name": "试卷的名dsd称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "answers": [] } ], "question_ids": "8", "practice_link": null}
获取试卷列表、过滤试卷列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_exam/ |
试卷列表 |
YES |
按条件过滤列表释义如下 :
1. course_category(直播课分类 pk)示例:
/server/job_management/list_exam/?course_category=2
2. is_hide(试卷是否隐藏)示例: /server/job_management/list_exam/?is_hide=False
3. tag(试卷标记学管还是月赛)示例: /server/job_management/list_exam/?tag=management学管
/server/job_management/list_exam/?tag=game月赛
4. exam_category(试卷的分类pk)示例:/server/job_management/list_exam/?exam_category=1
按搜索字段释义如下 :
1. 试卷名称
/server/job_management/list_exam/?search=少儿编程等级认证 1级 试卷
Response
{ "count": 3, "next": null, "previous": null, "results": [ { "pk": 3, "course_category": "编程创作", "name": "试卷的名称", "questions": [] }, { "pk": 2, "course_category": "编程创作", "name": "试卷的名称2", "questions": [ { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } } ] } ]}
用户答题相关操作
用户回答习题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_answer/ |
用户回答习题 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| question |
问题的 pk |
YES |
|
| option |
用户选择的选项的pk组 或者 用户所填的答案组 |
YES |
|
Request Data
选择题 示例1{ "question":10, "option":[7]}填空题 示例2{ "question":12, "option":["填空题答案1", "填空题答案2"]}连线题 示例 3{ "question":27, "option":{ "44":[43,42], 键是左选项的 pk,对应值是右选项的 pk 组 "46":[45] }}
Response
选择题 示例1{ "pk": 2, "owner": { "name": "啦啦啦", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": { "pk": 15, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 17, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 15 }, { "pk": 16, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 15 }, { "pk": 15, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 15 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述" } ], "blank_options":[] "is_right": true}填空题 示例2{ "pk": 50, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": { "pk": 12, "title": "问题的题目描述333", "photo": "https://static1.bcjiaoyu.com/public.png,https://static1.bcjiaoyu.com//Tiny-21539780778%281%29.png", "question_type": "blank", "analysis": "问题的解析描述333", "options": [ { "pk": 12, "number": "", "title": "填空题答案2", "photo": "", "is_answer": true, "question": 12 }, { "pk": 11, "number": "", "title": "填空题答案1", "photo": "", "is_answer": true, "question": 12 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, "options": [], "blank_options": [ "填空题答案1", "填空题答案2" ], "is_right": true}连线题 示例 3{ "pk": 65, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "exam_record": null, "question": { "pk": 27, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "connection", "analysis": "题目分析111", "options": [ { "pk": 46, "number": "B", "title": "左边选项2", "photo": "", "is_answer": false, "question": 27, "option_type": "left", "match_options": "45" }, { "pk": 45, "number": "3", "title": "右边选项 3", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null }, { "pk": 44, "number": "A", "title": "左边选项 1", "photo": "", "is_answer": false, "question": 27, "option_type": "left", "match_options": "42,43" }, { "pk": 43, "number": "2", "title": "右边选项 2", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null }, { "pk": 42, "number": "1", "title": "右边选项 1", "photo": "", "is_answer": false, "question": 27, "option_type": "right", "match_options": null } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, "options": [], "blank_options": [], "is_right": true, "user_answers": { "44": [ 43, 42 ], "46": [ 45 ] }}
修改答案,即用户重做错题
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/update_answer/${pk}/ |
修改答案 |
YES |
这里的 pk 是答案记录的 pk
Request Parameters
| Name |
Description |
Required |
Default |
| option |
用户选择的选项的pk组 |
YES |
|
Request Data
{ "option":[6]}
Response
{ "pk": 1, "owner": { "name": "啦啦啦", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": 10, "options": [ { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述" } ], "is_right": false}
获取答题记录详情
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/detail_answer/${pk}/ |
答题记录详情 |
YES |
Response
{ "pk": 1, "owner": { "name": "啦啦啦", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": 10, "options": [ { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述" } ], "is_right": false}
获取答题记录列表、过滤答题记录列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_answer/ |
答题记录列表 |
YES |
按条件过滤列表释义如下 :
is_right(答对(True)的还是答错(False)的)示例: /server/job_management/list_answer/?is_right=True
Response
{ "count": 1, "next": null, "previous": null, "results": [ { "pk": 2, "owner": { "name": "啦啦啦", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": 10, "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述" } ], "is_right": true } ]}
发卷记录相关
发卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
/server/job_management/create_exam_distribution_record/ |
发卷 |
YES |
Request Parameters
| Name |
Description |
Required |
Default |
| exam |
试卷的 pk |
YES |
|
| class_group |
班级的 pk组 |
YES |
|
| live_classroom |
直播教室的 pk |
YES |
|
Request Data
{ "exam":1, "class_group":[9,10], "live_classroom":66}
Response
{ "status": 0, "message": ""}
查看发卷记录、过滤各班各学员答卷情况、获取用户所有已有试卷列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_exam_distribution_record/ |
发卷记录列表 |
YES |
按条件过滤列表释义如下 :
exam(试卷 pk)示例: /server/job_management/list_exam_distribution_record/?exam=1
team(试卷 pk)示例: /server/job_management/list_exam_distribution_record/?team=1
owner(用户的username)示例:
/server/job_management/list_exam_distribution_record/?owner=15201052252
exam_category(问题的分类 pk)示例:
/server/job_management/list_exam_distribution_record/?exam_category=2
tag(试卷的标记)示例:
/server/job_management/list_exam_distribution_record/?tag=management /server/job_management/list_exam_distribution_record/?tag=game
Response
{ "count": 2, "next": null, "previous": null, "results": [ { "pk": 5, "owner": { "name": "15600116619", "avatar": "https://static1.bcjiaoyu.com/head1@3x.png", "user": "15600116619", "nickname": "" }, "exam": "试卷的名称", "team": "研发小班", "right_rate": "0.00", "wrong_num":0 }, { "pk": 4, "owner": { "name": "啦啦啦", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "exam": "试卷的名称", "team": "研发小班", "right_rate": "0.00", "wrong_num":0 } ]}
开始答卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/begin_exam/${pk}/ |
开始答卷 |
YES |
需要注意的是:这里的 pk 是试卷记录的 pk
Response
{ "pk": 1, "course_category": "编程创作", "name": "试卷的名称", "questions": [ { "pk": 10, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 10, "option_type": "middle", "match_options": null }, { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10, "option_type": "middle", "match_options": null }, { "pk": 5, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "question_category": { "pk": 1, "title": "Python Level 1", "content": "" }, "answers": [ 7 ], "remark": "", "difficult_grade": "simple" }, { "pk": 8, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 4, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 8, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "question_category": { "pk": 1, "title": "Python Level 1", "content": "" }, "answers": [], "remark": "", "difficult_grade": "simple" }, { "pk": 1, "title": "问题的题目描述", "photo": "问题的图片描述", "question_type": "choice", "analysis": "题目分析", "options": [ { "pk": 2, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null }, { "pk": 1, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 1, "option_type": "middle", "match_options": null } ], "course_category": { "pk": 2, "id": 2, "deleted": false, "create_time": "2019-04-10T16:13:25.553121", "order_index": 1000, "name": "编程创作", "desciption": "编程创作", "public": false }, "question_category": { "pk": 1, "title": "Python Level 1", "content": "" }, "answers": [], "remark": "", "difficult_grade": "simple" } ], "question_ids": "1,8,10", "practice_link": "", "is_hide": false, "is_countdown": false, "duration": 0, "tag": "management"}
提交试卷
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| PUT |
/server/job_management/submit_exam/${pk}/ |
提交试卷 |
YES |
需要注意的是:这里的 pk 是试卷记录的 pk
Request Parameters
| Name |
Description |
Required |
Default |
| exercises |
习题组 |
YES |
|
| question |
问题的 pk |
YES |
|
| option |
选项的 pk 组 或者 用户所填的答案组 |
YES |
|
Request Data
{ "exercises":[ { "question":10, //选择题 "option":[5,6] }, { "question":33, //连线题 "option":{ "74":[73,72], "76":[75] } }, { "question":12, //填空题 "option":["填空题答案1", "填空题答案2"] } ]}
Response
{ "right_rate": "50%"}
获取某张试卷的答题情况
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/detail_exam_distribution_record/${pk}/ |
获取某张试卷的答题情况 |
YES |
需要注意的是:这里的 pk 是试卷记录的 pk
Response
{ "pk": 12, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "exam": "试卷的名称", "team": "研发小班", "right_rate": "0.50", "answer_records": [ { "pk": 32, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/5a7ede147308f194ed9b108f98589a07_v.jpg-1080x1920", "user": "15201052252", "nickname": "chen" }, "question": { "pk": 10, "title": "问题的题目描述1111", "photo": "问题的图片描述1111", "question_type": "choice", "analysis": "题目分析111", "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": true, "question": 10 }, { "pk": 6, "number": "B", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 }, { "pk": 5, "number": "A", "title": "选项文本描述", "photo": "选项图片描述", "is_answer": false, "question": 10 } ], "course_category": { "pk": 2, "name": "编程创作", "desciption": "编程创作" } }, "options": [ { "pk": 7, "number": "C", "title": "选项文本描述", "photo": "选项图片描述" } ], "blank_options": [], "is_right": true } ]}
OJ 答题记录
新建 oj 题记录
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| POST |
server/job_management/create_oj_answer/ |
|
新建记录 |
Request Parameters
| Name |
Description |
Required |
Default |
| question |
问题的 id |
YES |
|
| exam_record |
试卷记录的 id |
YES |
|
| user_answer |
用户的答案 |
YES |
|
| language_type |
语言类型 |
YES |
|
| is_right |
是否答对 |
YES |
|
| question_type |
问题类型(是 oj 还是冒险岛) |
|
|
question_type: think(冒险岛)、 oj(oj系统)
Request Data
{ "question":63, "exam_record":25, "user_answer":"print(10)1", "language_type":"python3", "is_right":false, "question_type":"oj"}
Response
{ "pk": 8, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/bcgame_face2face/15201052252/5690023e83a72af4ff5be0badaadfbe4_k.gif-658x658", "user": "15201052252", "nickname": "chen", "user_id": 367, "is_staff": false, "segment": { "name": "白银", "image": "https://static1.bcjiaoyu.com/community/touxiangkuangking.png" } }, "exam_record": 25, "exam_name": "试卷的名称", "question": { "pk": 63, "title": "请输入数字 10", "photo": "", "question_type": "operation", "analysis": "", "options": [], "course_category": null, "question_category": null, "answers": null, "remark": "https://code.coding61.com/car.html?level=2&checkpoint=1®ion=1", "difficult_grade": "simple" }, "is_right": false, "user_answer": "print(10)1", "language_type": "python3", "question_type": "oj"}
查看Oj列表
Method and URL Structure
| Method |
Method Resource URL |
Descriptions |
Authentications Required |
| GET |
/server/job_management/list_oj_answer/ |
列表 |
YES |
按搜索字段释义如下 :
1. 用户名字
/server/job_management/list_oj_answer/?search=勿问情殇
2. 用户账号
/server/job_management/list_oj_answer/?search=15201052252
3. 试卷名字
/server/job_management/list_oj_answer/?search=试卷名称
Response
{ "count": 1, "next": null, "previous": null, "results": [ { "pk": 8, "owner": { "name": "勿问情殇", "avatar": "https://static1.bcjiaoyu.com/bcgame_face2face/15201052252/5690023e83a72af4ff5be0badaadfbe4_k.gif-658x658", "user": "15201052252", "nickname": "chen", "user_id": 367, "is_staff": false, "segment": { "name": "白银", "image": "https://static1.bcjiaoyu.com/community/touxiangkuangking.png" } }, "exam_record": 25, "exam_name": "试卷的名称", "question": { "pk": 63, "title": "请输入数字 10", "photo": "", "question_type": "operation", "analysis": "", "options": [], "course_category": null, "question_category": null, "answers": null, "remark": "https://code.coding61.com/car.html?level=2&checkpoint=1®ion=1", "difficult_grade": "simple" }, "is_right": false, "user_answer": "print(10)1", "language_type": "python3", "question_type": "oj" } ]}