Django+xadmin打造在线教育平台(四)Gaidy

学习自慕课网-使用python3.x与Django2.0.1开发的在线教育平台

(1)创建母板

把org-list.html拷贝到templates目录下,新建base.html,剪切org-list.html内容到里面

再修改一下静态文件的地址(css、就是、image和media)

(2)机构首页路由

fromorganization.viewsimportOrgViewpath('org_list/',OrgView.as_view(),name='org_list'),(3)机构views

classOrgView(View):'''课程机构'''defget(self,request):returnrender(request,'org-list.html')(4)org-list.html继承base

(5)修改base模板

把base中custom_bread和content两个block的内容剪切到org-list.html里面

base.html

org-list.html

(1)进xadmin后台添加城市

这里机构是静态固定不变的,所在地区是动态的,从数据库中获取得到的

(2)修改机构的models,添加一个机构类别字段

organization/models.py:

(3)添加机构

添加机构信息的时候要上传机构的图片

在项目目录下面新建一个目录“media”,用来存放上传的图片

setting中要配置我们把文件存放在哪个根目录之下

#settings.py#设置上传文件的路径MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')#指定根目录会跟upload里面拼接完整的路径

“/media/org/2018/月份/图片名字”

然后在后台添加十个机构

(1)写视图函数organization/views.py

classOrgView(View):'''课程机构'''defget(self,request):#取出所有课程机构all_orgs=CourseOrg.objects.all()org_onums=all_orgs.count()#取出所有城市all_citys=CityDict.objects.all()returnrender(request,"org-list.html",{"all_orgs":all_orgs,"all_citys":all_citys,'org_onums':org_onums,})(2)修改org-list.html

显示机构总共数量

显示城市

显示机构

然后还要做下面的设置

如何将imageField转换成图片地址

数据库中image以字符串格式保存的,是相对路径,直接取是取不出来的,必须补全路径

data-url="{{MEDIA_URL}}{{course_org.image}}"MEDIA_URL='/media/',这个是之前settings中设置好了要向使用{{MEDIA_URL}},要先在settings中TEMPLATES里面添加media处理器:'django.core.context_processors.media'

然后也要添加处理图片相应路径的url

TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,'templates')],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',#添加图片处理器,为了在课程列表中前面加上MEDIA_URL'django.template.context_processors.media',],},},]urls.py

fromdjango.views.staticimportservefromMxOnline.settingsimportMEDIA_ROOT#处理图片显示的url,使用Django自带serve,传入参数告诉它去哪个路径找,我们有配置好的路径MEDIAROOTre_path(r'^media/(P.*)',serve,{"document_root":MEDIA_ROOT})四个地方

(1)安装

pipinstalldjango-pure-pagination(2)settings里面添加

INSTALLED_APPS=(...'pure_pagination',)(3)views中使用方法

classOrgView(View):'''课程机构'''defget(self,request):#所有课程机构all_orgs=CourseOrg.objects.all()#有多少家机构org_nums=all_orgs.count()#所有城市all_citys=CityDict.objects.all()#对课程机构进行分页#尝试获取前台get请求传递过来的page参数#如果是不合法的配置参数默认返回第一页try:page=request.GET.get('page',1)exceptPageNotAnInteger:page=1#这里指从allorg中取五个出来,每页显示5个p=Paginator(all_orgs,5,request=request)orgs=p.page(page)returnrender(request,"org-list.html",{"all_orgs":orgs,"all_citys":all_citys,"org_nums":org_nums,})(4)修改org-list.html

这里变成"all_orgs.object_list"

分页功能

(1)城市列表筛选

后台处理city筛选

classOrgView(View):'''课程机构'''defget(self,request):#所有课程机构all_orgs=CourseOrg.objects.all()#有多少家机构org_nums=all_orgs.count()#所有城市all_citys=CityDict.objects.all()city_id=request.GET.get('city','')ifcity_id:all_orgs=all_orgs.filter(city_id=int(city_id))#对课程机构进行分页#尝试获取前台get请求传递过来的page参数#如果是不合法的配置参数默认返回第一页try:page=request.GET.get('page',1)exceptPageNotAnInteger:page=1#这里指从allorg中取五个出来,每页显示5个p=Paginator(all_orgs,2,request=request)orgs=p.page(page)returnrender(request,"org-list.html",{"all_orgs":orgs,"all_citys":all_citys,"org_nums":org_nums,'city_id':city_id,})前端页面

{%ifequalcity_id''%}如果为空,说明没有city选中,则“全部”是“active”

(2)类别筛选

后台处理

#类别筛选category=request.GET.get('ct','')ifcategory:all_orgs=all_orgs.filter(category=category)#有多少家机构org_nums=all_orgs.count()把org_numsf放到后面,先筛选在统计数量

模板中

(3)课程机构排名筛选

按点击量排名,只取前三个

(4)学习人数和课程的筛选

在models中添加学习人数和课程数两个字段

#学习人数和课程数筛选sort=request.GET.get('sort',"")ifsort:ifsort=="students":all_orgs=all_orgs.order_by("-students")elifsort=="courses":all_orgs=all_orgs.order_by("-course_nums")

前端

(1)用ModelForm来实现

在organazition目录下创建forms.py文件

#organization/forms.pyfromdjangoimportformsfromoperation.modelsimportUserAskclassUserAskForm(forms.Form):'''我要咨询'''classMeta:model=UserAskfields=['name','mobile','course_name'](2)include路由分发

path("org/",include('organization.urls',namespace="org")),使用命名空间防止重复

然后在organization/urls.py中添加

#organization/urls.pyfromorganization.viewsimportOrgViewfromdjango.urlsimportpath,re_path#要写上app的名字app_name="organization"urlpatterns=[path('list/',OrgView.as_view(),name='org_list'),]html中使用命名空间的方式:

修改base.html中“课程机构的链接”

HttpResponse可以指定传递到前端的数据类型

(4)配置url

#organization/urls.pyfromorganization.viewsimportOrgView,AddUserAskViewfromdjango.urlsimportpath,re_path#要写上app的名字app_name="organization"urlpatterns=[path('list/',OrgView.as_view(),name='org_list'),path('add_ask/',AddUserAskView.as_view(),name="add_ask"),](5)在ModelForm中自定义一个手机号验证的方法

#organization/forms.pyimportrefromdjangoimportformsfromoperation.modelsimportUserAskclassUserAskForm(forms.ModelForm):classMeta:model=UserAskfields=['name','mobile','course_name']defclean_mobile(self):"""验证手机号码是否合法"""mobile=self.cleaned_data['mobile']REGEX_MOBILE="^1[358]\d{9}$|^147\d{8}$|176\d{8}$"p=re.compile(REGEX_MOBILE)ifp.match(mobile):returnmobileelse:raiseforms.ValidationError(u"手机号码非法",code="mobile_invalid")(6)模板中使用Ajax方式提交

提交数据不合法时

合法时,提示成功信息,数据保存到数据库

(1)给courses添加一个外键

(2)模板

把课程机构页面的四个文件拷贝到templates目录下

新建一个模板,命名为“org_base.html”,复制org-detail-homepage.html的内容到里面

添加block,修改静态文件路径

把org_base中的三个“right”剪切到home里面

(4)home页面的url

from.viewsimportOrgHomeViewre_path('home/(P\d+)/',OrgHomeView.as_view(),name="org_home"),(5)后端逻辑处理

classOrgHomeView(View):'''机构首页'''defget(self,request,org_id):#根据id找到课程机构course_org=CourseOrg.objects.get(id=int(org_id))#反向查询到课程机构的所有课程和老师all_courses=course_org.course_set.all()[:4]all_teacher=course_org.teacher_set.all()[:2]returnrender(request,'org-detail-homepage.html',{'course_org':course_org,'all_courses':all_courses,'all_teacher':all_teacher,})(6)显示全部课程

(6)修改org-base.html

(7)为teacher添加一个图形字段

image=models.ImageField(default='',upload_to="teacher/%Y/%m",verbose_name="头像",max_length=100)(8)显示机构教师

(9)显示机构详情

机构首页:

(1)模板文件

把org-detail-course.html中不同的地方(right)取出来

(2)添加url

re_path('course/(P\d+)/',OrgCourseView.as_view(),name="org_course"),(3)views.py

classOrgCourseView(View):"""机构课程列表页"""defget(self,request,org_id):#根据id取到课程机构course_org=CourseOrg.objects.get(id=int(org_id))#通过课程机构找到课程。内建的变量,找到指向这个字段的外键引用all_courses=course_org.course_set.all()returnrender(request,'org-detail-course.html',{'all_courses':all_courses,'course_org':course_org,})(4)修改org-base.html中left的链接

(5)显示机构课程,修改org-detail-course.html

(6)左侧“active”状态修改

因为现在没有值能判断当前是哪个页面。所以在后台传个currentpage参数

修改org_base.html

(1)url

(2)views

classOrgDescView(View):'''机构介绍页'''defget(self,request,org_id):current_page='desc'#根据id取到课程机构course_org=CourseOrg.objects.get(id=int(org_id))returnrender(request,'org-detail-desc.html',{'course_org':course_org,'current_page':current_page,})7.10.机构讲师(1)url

re_path('teacher/(P\d+)/',OrgTeacherView.as_view(),name="org_teacher"),(2)views

classOrgTeacherView(View):"""机构教师页"""defget(self,request,org_id):current_page='teacher'course_org=CourseOrg.objects.get(id=int(org_id))all_teacher=course_org.teacher_set.all()returnrender(request,'org-detail-teachers.html',{'all_teacher':all_teacher,'course_org':course_org,'current_page':current_page,})(3)org-detail-teachers.html

(4)org-bae.html中left

(5)修改面包屑,点机构课程应该显示机构课程

然后分别在其它四个页面中重载page_path

其它三个方法一样

Ajax放在org_base.html里面

可以在数据库中看到用户的收藏

(4)但是还有个问题就是,刷新页面后,“已收藏”就变成“收藏”,是因为在返回页面的时候,没有判断收藏状态

所有要在views里面加个判断

#判断收藏状态has_fav=Falseifrequest.user.is_authenticated:ifUserFavorite.objects.filter(user=request.user,fav_id=course_org.id,fav_type=2):has_fav=True

THE END
1.网课哪个平台比较好在线教育平台有哪些十大品牌网CNPP重磅推出2024网课平台十大排行榜,十大网课平台排行榜前十名有新东方在线、猿辅导、作业帮、粉笔公考、有道精品课、希望学、正保会计网校、途途课堂、华图在线、小盒课堂。十大在线教育平台由品牌数据部门通过收集整理大数据分析研究得出,旨在告诉消费者网课https://www.cnpp.cn/china/list_5045.html
2.在线教育机构排名背后的影响因素及影响力探究教育科技通过对市场现状的分析,我们发现排名受多方面因素影响,包括教育质量、师资力量、课程种类、用户口碑等。排名也对机构的知名度和市场份额产生重要影响,进一步影响学生的学习选择和效果。本文旨在帮助读者更全面地了解在线教育机构排名的背后因素,为选择适合自己的学习平台提供参考。http://m.hbkbjy.com/post/2141.html
3.在线教育网站排名揭秘,最佳在线学习平台探索本文介绍了在线教育网站的排名,并探索了最佳在线学习平台。文章指出,随着互联网的普及,越来越多的人选择在线学习以提高自己的技能和知识。通过对不同在线教育网站的评估和比较,本文列出了一些备受推崇的在线学习平台,并简要介绍http://sdhana.cn/post/7359.html
4.网课平台排名线上货源平台,话本刷人气软件免费版在数字化时代,网课平台成为了学习的新趋势,它们不仅提供了灵活的学习时间,还涵盖了从基础教育到专业技能培训的广泛课程,根据最新的市场调查和用户反馈,以下是当前最受欢迎的网课平台排名: 1. Coursera - 提供来自全球顶尖大学的在线课程,覆盖各个学科领域。 https://www.scysry.com/kuaishou/202412-27584.html
5.重庆十大排名好的HTML5+CSS3课程辅导机构名单公布4.东方瑞通教育 5.博为峰软件开发 6.誉天教育 以上排名不分先后!仅供参考! 重庆十大排名好的HTML5+CSS3课程辅导机构名单公布 HTML5+CSS3的结合使用为网站开发带来了诸多显著优势,这些优势体现在多个方面,具体如下: HTML5的优势 语义化标签:HTML5引入了如、、、、、等新的语义化标签,这些标签使页面结构更加清晰,https://360yuxue.com/newsdetail/id/73615.html
6.在线授课软件深度分析与综合评估,哪家软件表现最佳?网易云课堂是网易旗下的在线教育平台,涵盖了丰富的课程资源,其特色在于强大的课程管理与互动功能,为教师和学生提供了良好的教学体验。 3、知乎课堂 知乎课堂是知乎旗下的在线教育产品,凭借其丰富的知识内容和社群互动优势,吸引了大量用户,知乎课堂注重课程质量与内容深度,为用户提供高质量的在线课程。 http://m.bj-keneng.com/post/1813.html
7.2018全国十大早教品牌排行榜,在线教育成为新风向通过对百度、360、神马、腾讯教育、妈妈网等权威平台大数据统计分析鉴定,及实地考察北京、天津、上海、广州、武汉等一二线城市上百家早教品牌的经营情况和口碑,总结了最近三年经营最好、最有口碑的十大早教品牌排名趋势。 其中最重要的趋势就是教育模式已经在发生翻天覆地的变化,传统的早教一方面同质化严重,另一方面课程https://i.ifeng.com/c/7fb4TC4OesQ
8.营收利润绩效运营资产……19家出版上市公司哪家强?网文出海经历三个阶段,2014年前处于版权出海阶段;2014-2017年进入文本出海阶段;2018年起点国际上线海外原创功能,网文出海进入生态出海阶段,2020年多家出海平台布局多语言市场。伴随着网络文学产业业态的输出,网络文学在海外的影响力进一步提升。 在线教育:在线教育异军突起,深耕细分赛道运营 https://stock.10jqka.com.cn/20220107/c635789649.shtml
9.育路教育网育路教育网-致力于提供国际学校、出国留学,在职研究生,专本科学历,高校招生,高考,中小学教育,远程教育等教育资讯和招生信息,打造专业的教育学习服务平台,为学生提供选课择校、学习交流等全方位的教育学习解决方案。http://www.yuloo.com/
10.十大云课堂平台在线课堂网站有哪些2024年云课堂十大排行榜最新发布,十大云课堂排行榜前十名有中国大学MOOC、学堂在线、学银在线、智慧树网、智慧职教、网易云课堂、哔哩哔哩、华文慕课、优学院、国图公开课。云课堂10大排行榜由品牌研究部门收集整理大数据分析研究得出,帮助你了解在线学习平台有哪些。https://m.maigoo.com/maigoo/9354ykt_index.html
11.甘肃省教育考试院招生考试信息综合查询平台考生登录 查询类型: ※※请选择要查询的项目※※2024年高考录取查询2024年普通专升本成绩查询2024年普通专升本录取查询 考生号: 身份证号: 验证码: 查询 提示:在网吧等公共场所查询完成后,请及时关闭浏览器窗口,以免你的个人信息泄露!https://gaokao.ganseea.cn/
12.2018年第三期总第21期西安决策参考来源:新华社 2018年8月16日 木桶的容量,取决于最短的那块板。为补齐农村教育短板,党的十八大以来,我国统筹推进县域内城乡义务教育一体化改革发展,教育投入继续向困难地区和薄弱环节倾斜,城乡义务教育一体化改革取得新进展。 攻坚:强化两类农村最薄弱学校建设 http://www.xalib.org.cn/info/72409.jspx
13.常德市“智慧教育”云平台一期建设项目采购形成具有国内先进水平、信息技术与教育融合创新发展的常德特色教育信息化发展道路,同时建立一套依靠伴随式数据采集且具有常德市特色的教育信息标准、服务监管体系,搭建常德市通用的教研平台与网络阅卷平台为下辖各学校提供管理教学服务,并在此基础上进行大数据挖掘分析,逐步完成全面提升教育质量、促进教育公平、加快推进教育https://changd.ccgp-hunan.gov.cn/f/m/pkg_detail/pkg_3500
14.从“这块屏幕”说起,聊聊美国在线教育平台的前世今生从美国用户排名前三的MOOC 平台来看,除了2C个人用户直接购买的课程外,用于集团用户员工培训的2B业务,以及在线学位业务,鼎足三分,成为了 Coursera、edX 和 Udacity 平台2018年课程服务的三大方向。 其中,2018年,在2B 与 2C 业务的交叉点上,与科技大公司合作提高听课学生就业率成为一些MOOC平台的一大亮点。都说美国https://www.tmtpost.com/3662105.html
15.长沙师范学院12-07 打造协同提质新平台,创新驱动学前教育高质量发展 12-07 科技教育协会、春雷公益2024年奖助学金发放首站在长沙师范学院开启 12-07 中国社会科学院党圣元来我校讲学 12-06 校纪委书记周劲松带队赴湖南第一师范学院交流工作 长师要闻 查看更多 12-03 校党委书记罗婷教授带队出席新时代学前教育教师队伍建http://www.cssf.cn/
16.小学招生中学招生招生划片特长生小学中学基础教育频道是中国教育在线专注于义务教育阶段的信息平台,主要为广大学生及家长提供小学招生、初中招生、高中招生的报名及招生划片等政策信息,为学校提供宣传展示的窗口,为中小学校长以及教师提供学习与交流的阵地。https://chuzhong.eol.cn/
17.集美大学4. 2023年ABC中国大学排名中国大学排行榜官网[引用日期2023-08-25] 5. 集美大学软科[引用日期2022-09-21] 6. 集美大学章程-集美大学集美大学[引用日期2021-08-18] 7. 教育部阳光高考信息公开平台阳光高考[引用日期2021-08-18] 8. 2023软科中国大学排名软科排名[引用日期2023-07-03] 9. 录取批次掌上高考[https://baike.sogou.com/v64479.htm
18.教育部中国大学生在线中教华影电影院线股份有限公司中国大学生在线 中国大学生在线由教育部主管主办、教育部思政司指导、中国教育出版传媒集团承办,始终坚持“围绕学生、关照学生、服务学生”,致力成为国内最大最受欢迎的网络思政全媒体传播平台、高校校园网络文化活动重要策源地、高校网络育人研究咨询机构。 查看更多 https://www.univs.cn/
19.西安医学高等专科学校西安医学高等专科学校 一核双翼三平台12-13 彬州市职业教育中心师生来我校开展研学活动12-11 西安医学高等专科学校召开安全稳定专题会议12-11 爱心助农暖人心,校园采购传温情——西12-09 走访看望实习生,温情关怀促成长12-03 通知公告 更多>> https://www.xagdyz.com/
20.101教育官网虽然现在不唯成绩,但也不是不要成绩,学习的效果还是以成绩来呈现,尤其是排名。我们要客观看待,理性分析,想方设法提高教学成绩。 2024-11-22 【答题技巧】语文万能答题公式 在探讨语文学习的奥秘与高效答题技巧时,掌握一套“语文万能答题公式”无疑能为广大学子点亮一盏明灯。这一公式不仅凝聚了前人智慧的结晶,更是https://www.chinaedu.com/
21.新东方在线:另一个新东方的崛起新东方在线是新东方教育旗下的在线教育平台,于2005年成立,2017年3月21日挂牌新三板,2018年2月14日摘牌,并于2018年7月17日首次提交港股上市申请书。新东方在线依托新东方的丰富资源与教育经验,在大学教育、K12教育以及学前教育三个领域提供在线教育课程。从2005年成立境内运营实体北京迅程,到2018年在开曼群岛注册“新东方https://www.360doc.cn/article/53746720_911853710.html
22.中公网校【中公网校】中公教育旗下在线学习培训辅导平台,通过线上线下结合、直播授课、班主任督学、题库练习等产品和服务,为用户提供教学讲练多位一体的学习体验。课程涵盖国省考、事业单位、教师、金融银行、国企、警法等公职考试。https://www.eoffcn.com/
23.YouTube:开启全民创作时代的中视频龙头流媒体网从平台视频累计观看量看,排名前三的视频类型是娱乐类,音乐类和vlog,分别占比25%、20%、19%。 图表:截至2018年12月YouTube累计内容类型占比 资料来源:Pex,Medium,中金公司研究部 图表:截至2018年12月YouTube累计观看量占比 资料来源:Pex,Medium,中金公司研究部https://lmtw.com/mzw/content/detail/id/204595/keyword_id/
24.2018年在线教育学习平台的五种热门模式短书平台密切关注“互联网女皇”——玛丽·米克尔发布的2018年的互联网趋势报告,在北京时间5月31日凌晨,米克尔针对教育问题着重提出了一点:终身学习成为重要的趋势,基于诸多新出现的职业的知识需求(如机器学习、深度学习、区块链等)在2017年已经成为了全球范围内最主要的教育需求。 https://www.jianshu.com/p/0a533eb2f16f
25.2018中国在线教育平台学员大数据报告亿欧智库基于腾讯课堂学员数据对腾讯课堂2018年学员的学习兴趣和行为进行了深度分析和挖掘,探究学员在课程的寻找、选择、观看、付费等环节的行为,从而更深一步地了解腾讯课堂学员的学习习惯。一方面可以加深人们对于平台型在线教育消费者的了解,另一方面也能为平台及平台课程提供商的运营提供相关数据支持和帮助。https://baogao.store/26818.html
26.2018年中国在线教育平台用户大数据报告腾讯课堂数据篇界面现阶段中国B2B2C在线教育平台整体处于天时地利人和的发展时期。在线教育平台能够连接需求端和供给端,将盈余的优质资源输出给亟待满足的知识渴求着,实现需求端和供给端的共赢局面。 一、学生端用户生态 ——基本属性 经济环境是影响学员学习兴趣的主要原因 东南沿海省份学习IT、互联网和设计、创作领域课程的用户占比较高。https://m.jiemian.com/article/1928931.html