讲师相关功能实现

拷贝并修改teacher-list.htmlteacher-detail.html,

继承base模板

  1. # 讲师列表
  2. path('teacher_list/', TeacherListView.as_view(), name="teacher_list"),

添加讲师的年龄字段

  1. age = models.IntegerField(default=18, verbose_name=u"年龄")

分页仿照org_list, 注意__object_list__

  1. # 课程讲师列表页
  2. class TeacherListView(View):
  3. def get(self, request):
  4. all_teacher = Teacher.objects.all()
  5. # 总共有多少老师使用count进行统计
  6. teacher_nums = all_teacher.count()
  7. # 对讲师进行分页
  8. # 尝试获取前台get请求传递过来的page参数
  9. # 如果是不合法的配置参数默认返回第一页
  10. try:
  11. page = request.GET.get('page', 1)
  12. except PageNotAnInteger:
  13. page = 1
  14. # 这里指从allorg中取五个出来,每页显示5个
  15. p = Paginator(all_teacher, 4, request=request)
  16. teachers = p.page(page)
  17. return render(request, "teachers-list.html", {
  18. "all_teacher":teachers,
  19. "teacher_nums":teacher_nums
  20. })

排序 & 讲师排行榜

  1. sort = request.GET.get("sort", "")
  2. if sort:
  3. if sort == "hot":
  4. all_teacher = all_teacher.order_by("-click_nums")

将sort return到前端。实现active

排行榜讲师

  1. # 排行榜讲师
  2. rank_teacher = Teacher.objects.all().order_by("-fav_nums")[:5]

完善前端代码

讲师详情页

  1. # 访问机构讲师
  2. re_path('teacher/detail/(?P<teacher_id>\d+)/', TeacherDetailView.as_view(), name="teacher_detail"),
  1. # 教师详情页面
  2. class TeacherDetailView(View):
  3. def get(self, request, teacher_id):
  4. teacher = Teacher.objects.get(id = int(teacher_id))
  5. all_course = teacher.course_set.all()
  6. # 排行榜讲师
  7. rank_teacher = Teacher.objects.all().order_by("-fav_nums")[:5]
  8. has_fav_teacher = False
  9. if UserFavorite.objects.filter(user=request.user, fav_type=3, fav_id= teacher.id):
  10. has_fav_teacher = True
  11. has_fav_org = False
  12. if UserFavorite.objects.filter(user=request.user, fav_type=2, fav_id= teacher.org.id):
  13. has_fav_org = True
  14. return render(request, "teacher-detail.html", {
  15. "teacher":teacher,
  16. "all_course":all_course,
  17. "rank_teacher":rank_teacher,
  18. "has_fav_teacher":has_fav_teacher,
  19. "has_fav_org":has_fav_org,
  20. })

收藏功能

  1. # 教师收藏和机构收藏
  2. has_teacher_faved = False
  3. if UserFavorite.objects.filter(user=request.user, fav_type=3, fav_id=teacher.id):
  4. has_teacher_faved = True
  5. has_org_faved = False
  6. if UserFavorite.objects.filter(user=request.user, fav_type=2, fav_id=teacher.org.id):
  7. has_org_faved = True
  1. {% if has_teacher_faved %}已收藏{% else %}收藏{% endif %}
  2. <a class="btn" id="jsRightBtn">{% if has_org_faved %}已收藏{% else %}收藏{% endif %}</a>

Ajax代码参考之前的

Django+Xadmin打造在线教育系统(六)的更多相关文章

  1. Django+Xadmin打造在线教育系统(四)

    完成授课机构的功能 模板继承 在templates目录下,新建base.html,剪切org-list.html内容到里面 编写org-list.html内容 继承base.html,将里面的面包屑和 ...

  2. Django+Xadmin打造在线教育系统(三)

    完成登录 注册 找回密码 激活 验证码集成 将HTML文件拷贝到templates目录下,css,js,img,media,images文件夹拷贝到static文件夹下 修改index.html和lo ...

  3. Django+Xadmin打造在线教育系统(二)

    基于xadmin的后台管理 先使用pip进行安装xadmin及其依赖包 pip install django-adminx 安装完成后卸载xadmin,保留依赖包即可 pip uninstall dj ...

  4. Django+Xadmin打造在线教育系统(九)

    xadmin的进阶开发 因版本问题.有些配置可能无效 自定义icon xadmin的图标采用的是第三方css样式font awesome,我们可以进官网下载最新的样式替代原本的,下载地址:http:/ ...

  5. Django+Xadmin打造在线教育系统(七)

    全局导航&个人中心&全局搜索 配置全局导航 让index页面也继承base页面,注意首页有个单独的__index.js__ base页面的导航栏也进行配置 <nav> &l ...

  6. Django+Xadmin打造在线教育系统(一)

    系统概括: 系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心. 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏.可以删除收藏,我的消息. 导航栏: 公开课,授课讲师 ...

  7. Django+Xadmin打造在线教育系统(八)

    首页和全局404,500配置 轮播图 公开课 授课机构 新建view ## 首页view class IndexView(View): def get(self,request): # 取出轮播图 a ...

  8. Django+Xadmin打造在线教育系统(五)

    课程相关功能实现 课程列表 创建课程相关的urls.py path("course/", include('course.urls', namespace="course ...

  9. Django+xadmin打造在线教育平台(一)

    目录 在线教育平台(一)      在线教育平台(二) 在线教育平台(三)      在线教育平台(四) 在线教育平台(五)      在线教育平台(六) 在线教育平台(七)      在线教育平台( ...

随机推荐

  1. SAI窗口无法移动

    昨天开SAI遇到了一个很奇怪的问题,改变了双屏的位置后SAI的窗口不能移动两边也有黑边,貌似是这样,标题栏只能进行上下改变窗口大小,不能移动窗体 问题是这样出现的:把任务栏解除锁定拖到侧边就会这样 解 ...

  2. js中布尔值为false的六种情况

    下面6种值转化为布尔值时为false,其他转化都为true 1.undefined(未定义,找不到值时出现) 2.null(代表空值) 3.false(布尔值的false,字符串"false ...

  3. H5 60-浮动元素排序规则

    60-浮动元素排序规则 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  4. H5 marquee标签

    39-marquee标签 内容 属性: direction: 设置滚动方向 left/right/up/down scrollamount: 设置滚动速度, 值越大就越快 loop: 设置滚动次数, ...

  5. iOS开发 横向分页样式 可左右滑动或点击头部栏按钮进行页面切换

    iOS开发 横向分页样式 可左右滑动或点击头部栏按钮进行页面切换 不多说直接上效果图和代码 1.设置RootViewController为一个导航试图控制器 //  Copyright © 2016年 ...

  6. 20分钟 看图手写的table

    <html><body><table width="100%" border="1" cellspacing="0&qu ...

  7. JavaScript对象访问器属性

    对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> va ...

  8. Linux 典型应用之服务管理

    crontab 定时任务 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minut ...

  9. C# web发布设置

    1.配置文件设置: 选择"自定义",配置文件框自己输入. 2.连接设置: 3.发布版本设置 4.预览 预览没问题点发布即可.

  10. 关于百度地图API和jqGrid踩到的坑

    1.百度地图重新标记问题 var map = new BMap.Map("map"); ...... var marker = new BMap.Marker(point); // ...