Open edX course数据探索
文章目录
方法
采用jupyter来探究,基于dogwood做的探索
获取course的各种方法
需要注意的是各种方法获取的course,关联的数据不尽相同
get_courses
- 方法路径:
from courseware.courses import get_courses
源码: get_courses,其获取课程的关键是branding.get_visible_courses
相关源码:
1 2 3
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview courses = CourseOverview.get_all_courses(org=filtered_by_org) #course = CourseOverview.get_from_id(course_key)
使用方法:
1 2 3 4
from django.contrib.auth.models import AnonymousUser user=AnonymousUser() courses = get_courses(user) course = all_courses[0] # CourseOverview object
捕获对象:CourseOverview
一些实用属性和方法:
1 2 3 4 5 6
course.course_image_url #>>>u'/asset-v1:edX+DemoX+Demo_Course+type@asset+block@images_course_image.jpg' course.created course.get_all_course_keys() get_all_courses() a.get_next_by_created() a.max_student_enrollments_allowed
get_course
- 方法路径:
from courseware.courses import get_course
- 源码:get_course
使用方法:
1 2 3 4 5
from opaque_keys.edx.locations import SlashSeparatedCourseKey course_id_string = u"course-v1:a+b+c" course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id_string) from courseware.courses import get_course course = get_course(course_id) # CourseDescriptorWithMixins
捕获对象:CourseDescriptorWithMixins
等效于:
1 2
from xmodule.modulestore.django import modulestore course = modulestore().get_course(course_key)
一些实用属性和方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
course.advanced_modules #高级模块 course.children # >>>BlockUsageLocator 已有的章节 course.category # u'course' 自省功能 ,course.children[0].category -> u'chapter' course.display_name # 课程名 ,可以在高级设置里修改 course.display_name_with_defaulte course.display_number_with_default #course name,在course_id_string中间的那个值(唯一性),可以在高级设置里修改 course.fields # 列出所有属性 course.get_children() # 获得子节点 course.get_content_titles() # 获得所有内容的标题 course.get_context().keys() #显示出所有的context,使用keys来观察层次,其中数据很完备 course.html_textbooks course.id #>>>CourseLocator course.number # course name/number 有唯一性 course.pdf_textbooks course.raw_grader course.tabs[0].name #>>>u'Courseware' course.top_level_discussion_topic_ids course.xml_attributes course.xml_element_name()
get_course_about_section
- 方法路径:
from courseware.courses import get_course_about_section
- 源码: get_course_about_section
Valid keys:
- overview
- short_description
- description
- key_dates (includes start, end, exams, etc)
- video
- course_staff_short
- course_staff_extended
- requirements
- syllabus
- textbook
- faq
- effort
- more_info
- ocw_links
-
- 疑惑,这个放在course_about页面正常,直接使用有误,跟踪course //course缺乏static_asset_path属性,所以报错
- views course_about
CourseDetails
- 方法路径:
from openedx.core.djangoapps.models.course_details import CourseDetails
- 源码: CourseDetails
使用方法:
1 2 3 4 5
from openedx.core.djangoapps.models.course_details import CourseDetails course_id_string = u"course-v1:a+b+c" course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id_string) course_details = CourseDetails.fetch(course_key) #course_details.overview
实用代码
CourseKey.from_string:
1 2
from opaque_keys.edx.keys import CourseKey course = modulestore().get_course(CourseKey.from_string(kwargs.get('course_id')))
文章作者 种瓜
上次更新 2016-04-28