对应github地址:第10天

 
一. 课程列表页
 
1. 拷贝course-list.html到templates目录中
2. 编写url和view
在courses/views.py中新加
 
在mxonline/urls.py中加入
新建courses/urls.py
 
 
3. 修改course-list.html
然后访问http://127.0.0.1:8000/course/list即可访问相应页面,但是此时是没样式的,我们发现course-list.html和org-list.html样式其实是相似的,可以拷贝一下模板标签,然后修改一下内容
 
F12找到课程展示内容的代码,把代码块拷贝到{% block content %}中
 
 
4. 动态展示课程
网页基本结构如下,class="left"是课程的展示部分,class="right"是热门课程推荐部分
 
每一个课程展示都是class="box"的<div>,所以只须用一个for循环就好
 
 
5. 分页功能
 
5.1 课程分页
把organization/views.py的分页功能拷贝到courses/views.py中,稍微修改下
from pure_pagination import Paginator, EmptyPage, PageNotAnInteger
 
修改course-list.html中的for循环,此时的all_course已经不是queryset,而是purepage对象,所以有一个object_list函数用于分页
 
 
5.2 添加页码
把org-list.html中页码的代码拷贝过来,把all_orgs改成all_courses就好。 因为两个页面的css和html很相似
 
 
 
6. 按要求进行搜索排序
 
6.1 拷贝机构OrgView中的排序代码到courses/views.py->CourseListView中,并在放在分页代码前面,修改下变量名
 
并且把sort放到return render中
 
 
6.2 修改course-list.html导航栏代码
 
修改课程默认按添加顺序排序排序,这样html中"最新"代码中sort为空即可
 
 
 
7. 页面右侧-热门课程推荐
CourseListView中定义新的变量hot_courses,并且放在return render中
 
在course-list.html中搜索热门课程,把热门课程的<dl>标签块放在for循环中
 
这里要注意的是{{ hot_course.get_degree_display }}
这里的难度是一个choice选项,如果直接写hot_course.degree,会取出在数据库保存的"cj","zj","gj",如果想取到后面的文字,在django就必须写上面的固定写法
 
 
 
 
 
 
二.  课程详情页1
 
1. 拷贝course-detail.html到templates目录
2. 模板继承
把course-list.html中的内容拷贝过来,替换面包屑和content的模板内容,在course-detail.html中面包屑代码后面有两个section代码块,放在content模板标签内
 
3. 配置view和url
courses/views.py中新写
 
courses/urls.py中添加
 
4. 为了能够在course-list.html中点击课程可以跳转到相应课程详情页,需要修改href标签内容,原先所有的href="course-detail.html"都替换为如下的url模板标签
 
因为我们传了一个course.id到'course:course_detail',所以需要修改CourseDetailView的get函数里的参数,在其中加上参数course_id(从courses/urls.py中获取的url部分内容)
 
 
5. 课程详情页中动态获取课程信息
 
5.1 继续修改课程view,从数据库中找到指定id的课程信息并传到前端页面
 
 
5.2 修改course-detail.html中的静态地址为标签变量
 
1)需要注意的是课程章节数的信息之前在model中并没有定义,但是在Lesson类中有一个外键关联到Course,而在Lesson中有相应的章节信息,那么可以在courses/models.py-> class Course中定义一个函数
之后可在course-detail.html中直接调用
 
2)课程类别原先在定义model时也没定义,所以加一个字段,然后进行数据迁移
 
3)学习用户和章节数相似,也需要在courses/models.py中定义一个函数,原因是在operation/models.py中的UserCourse有一个外键关联到Course
 
4)course-detail.html相关代码修改如下
 
 
注意:
{{ user_course.user.image }}是因为在UserCourse中有一个外键user关联到UserProfile,而在UserProfile中有一个image字段
 
 
6. 在后台用户管理/用户课程中添加数据,以及更改用户头像,
 
7. 点击课程后,后台课程属性click_time加1
course/views.py-> class CourseDetailView
 
 
 
 

mxonline实战10,课程列表页,课程详情页1的更多相关文章

  1. 如何用Baas快速在腾讯云上开发小程序-系列4:实现客户侧商品列表、商品详情页程序

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/431172001487671163 来源:腾云阁 h ...

  2. mxonline实战13,授课讲师列表页,详情页,index页面全局导航

    对应github地址:第13天   把teacher-list.html和teacher-detail.html拷贝过来   一. 授课讲师列表页   1. 修改html文件 把org-list.ht ...

  3. 25、Django实战第25天:讲师详情页

    1.复制teacher-detail.html到templates目录下 2.编辑teacher-detail.html,继承base.html 3.编辑organization.view.py cl ...

  4. keep-alive 实现从列表页到详情页,然后再回到列表页并保持原来列表页的页码数,并且只刷新数据

    思路: keep-alive应用场景介绍 <keep-alive> 不会在函数式组件中正常工作,因为它们没有缓存实例.结合router,缓存部分页面 activated 和 deactiv ...

  5. Meteor 从一个列表页进入详情页怎样高速显示详情

    无论是做android开发,还是做网页web开发,都 会有列表,都须要点击列表进入列表项的详情页面,查看具体信息,能常情况下,我们都是将这一列表项的id传到详情页,由详情页再到数据库查询具体信息. 在 ...

  6. Flask实战第62天:帖子详情页布局

    在templates/front/下创建详情页面front_pdetail.html 编辑front.views.py创建详情页的视图函数 from flask import abort ... @b ...

  7. vue keep-alive从列表页进入详情页,再返回列表页时,还是之前滚动的位置

    //router.js { path: '/oppo-music', component: () => import('@/views/OppoMusic.vue'), meta: { titl ...

  8. mui列表跳转到详情页优化方案

    原理 因为列表页到详情页是多对一的形式,即列表页的多条数据列表对应的是一个详情页,只是数据不同而:因此,可以在加载列表页时预加载详情页,即创建一个详情页的webview,但是不显示出来,点击列表的时候 ...

  9. Python Django CMDB项目实战之-1如何开启一个Django-并设置base页、index页、文章页面

    1.环境 win10 python 2.7.14 django 1.8.2 需要用到的依赖包:MySQLdb(数据库的接口包).PIL/pillow(处理图片的包) 安装命令: pip install ...

随机推荐

  1. go_Map

    go语言中map使用哈希表,必须可以比较相等 除了slice,map,function的内建类型都可以作为key Struct类型不包括上述字段,也可作为key map中的key是无序的 packag ...

  2. 323. Number of Connected Components in an Undirected Graph按照线段添加的并查集

    [抄题]: Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of n ...

  3. SpringMVC框架结构的图解、架构的处理流程以及三大组件的说明和使用

    1.1 框架结构 1.2 架构流程 1.用户发送请求至前端控制器DispatcherServlet: 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器: 3. ...

  4. C#中DateTime的各种操作

    C#时间戳与日期互转 /// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name="timeSta ...

  5. [Laravel] mac下通过 homestead 搭建环境 到运行项目

    seven_Android 关注 2017.07.03 21:33* 字数 2240 阅读 3464评论 10喜欢 9 之前学习过一段时间的 Laravel ,换 mac 后一直没空做相关的事情,而且 ...

  6. Ubuntu 17 Nginx 配置 laravel 运行环境

    1 安装 nginx #aptitude install nginx #apatitude install php7.1-fpm 2 在 /etc/nginx/sites-available 建立 s ...

  7. SpringCloud之自动化配置-config

    编程开发的时候有没有觉得很多配置文件需要维护,比如,修改了数据库连接,所有用到该数据库的服务配置都得替换,是不是超级的麻烦呢 下面,给大家介绍一下Spring提供的配置自动化组件-spring clo ...

  8. thinkphp整合系列之phpexcel导入excel数据

    一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:导入excel的函数 /** * 导入excel文件 * @param string $file ex ...

  9. python使用git进行版本控制2

    对上一次的readme文件进行修改 现在,运行git status命令看看结果 $ git statusOn branch masterChanges not staged for commit:  ...

  10. 三种调用WCF服务的代码

    wsHttpBinding,Massage UserName认证 static void Main(string[] args) { //使用服务引用方式生成的Client调用服务,使用自动生成的配置 ...