从今天开始,我们将完成"公开课"课程的相关功能.....

1、把course-list.html复制到templates目录下

2、这个页面的头部、底部与之前定义的base.html模板是一样的,所以我们可以继承它,编辑course-list.html

3、在app.courses下新建urls.py文件,以后我们把课程相关的url都放在这个文件下

4、编辑项目根下的urls.py,把courses下面的urls.py包含进去

urlpatterns = [
...
#课程相关url配置
url(r'course/', include('courses.urls', namespace='course')), ]

5、我先把页面展示出来,编写个view,编辑courses.views.py

from django.shortcuts import render
from django.views.generic import View class CourseListView(View):
def get(self, request):
return render(request, 'course-list.html', {})

6、添加一条url,编辑courses.urls.py

from django.conf.urls import url
from .views import CourseListView urlpatterns = [
url(r'^list/$', CourseListView.as_view(), name='course_list'), ]

7、我修改下首页的导航

8、现在可以访问到课程列表页了,点击首页中的公开课或者http://127.0.0.1:8000/course/list/

默认是"最新",先来完成这部分,编辑views

...
from .models import Course class CourseListView(View):
def get(self, request):
all_courses = Course.objects.all().order_by('-add_time') #根据时间排序 return render(request, 'course-list.html', {
'all_courses': all_courses,
})

编辑course-list.html

分页功能

编辑views

加了分页以后,页面的for循环那里要改下

页码部分

"最热门"和"参与人数"排序

编辑vires

from django.shortcuts import render
from django.views.generic import View
from .models import Course
from pure_pagination import Paginator, PageNotAnInteger class CourseListView(View):
def get(self, request):
all_courses = Course.objects.all().order_by('-add_time') #根据时间排序 #课程排序
sort = request.GET.get('sort', '')
if sort:
if sort == 'host':
all_course = all_courses.order_by('-click_nums')
elif sort == 'students':
all_courses = all_courses.order_by('-students') # 对课程进行分页
try:
page = request.GET.get('page', 1)
except PageNotAnInteger:
page = 1 p = Paginator(all_courses, 3, request=request)
courses = p.page(page) return render(request, 'course-list.html', {
'all_courses': courses,
'sort': sort,
})  

编辑前端course-list.html

热门课程推荐

编辑views

前端页面

访问页面后,发现存在一个问题,就是课程难度那里显示的是我们数据库中的字母

那么该如何显示我们在model中设置的中文部分呢???

Django专门为choice设置了一种用法,编辑course-list.html

19、Django实战第19天:课程列表页的更多相关文章

  1. [py][mx]django模板继承-课程列表页

    课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以 ...

  2. mxonline实战10,课程列表页,课程详情页1

    对应github地址:第10天   一. 课程列表页   1. 拷贝course-list.html到templates目录中 2. 编写url和view 在courses/views.py中新加

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

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

  4. 微信小程序 项目实战(三)list 列表页 及 item 详情页

    1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...

  5. Django实战(19):自定义many-to-many关系,实现Atom订阅

    记得有人跟我说过,rails的has_many :through是一个”亮点“,在Django看来,该功能简直不值一提.rails中的many-to-many关联中,还需要你手工创建关联表(写 mig ...

  6. [Django实战] 第8篇 - 分页列表

    当用户登录成功后,首先看到的是他自己之前提交的任务列表,本篇将实现该页面. 视图(views.py)里定义如下: from django.core.paginator import Paginator ...

  7. 14、Django实战第14天:列表筛选功能

    今天完成的是点击这些条件进行机构的筛选 首先来完成城市:当用户点击城市的时候,我们自动给它加一个参数(city.id) 编辑organization.views.py 刷新页面,发现筛选功能已经OK了 ...

  8. 20、Django实战第20天:课程详情页

    1.把course-detail.html复制到templates目录下 2.编辑course-detail.html,分析页面,继承base.html 3.编辑courses.views .... ...

  9. 16、Django实战第16天:优化url

    今天完成的是一个优化url.... 前面我们所有的url都是配置在一个mxonline.urls.py中.因为我们根据项目实际情况配置了多个app,那么我们相应的url是可以配置在自己的app中的,这 ...

随机推荐

  1. [NOIP2017 TG D2T2]宝藏

    题目大意:给定一个有重边,边有权值的无向图.从某一个点出发,求到达所有的点需要的最少费用,并且限制两点之间只有一条路径.费用的计算公式为:所有边的费用之和.而边$x->y$的费用就为:$y$到初 ...

  2. 前缀统计 [Trie]

    前缀统计 描述 给定N个字符串S1,S2...SN,接下来进行M次询问,每次询问给定一个字符串T,求S1-SN中有多少个字符串是T的前缀.输入字符串的总长度不超过10^6,仅包含小写字母. 输入格式 ...

  3. Good Substrings CodeForces - 271D

    You've got string s, consisting of small English letters. Some of the English letters are good, the ...

  4. json解析之jackson

    对于json格式的数据解析现在越来越多了,之前介绍了两种:fastjson和net.sf.json解析. 今天又有一个jackson解析.不过相对于之前两种,这种感觉稍微笨拙些.呵呵,还是了解下吧: ...

  5. 继承spring的validator接口,实现对数据的校验

    在org.springframework.validation这个包中提供了一些对数据校验的方法,其中Validator接口是其中的一个. 现在用Validator接口,完成对数据的校验. 第一步:先 ...

  6. angular-translate加载.json文件进行翻译

    这是这个demo的目录结构,总共有两个文件:locale-chinese.json和translation11.html locale-chinese.json文件的内容是: { "beau ...

  7. spring的普通类中如何取session和request对像

    在使用spring时,经常需要在普通类中获取session,request等对像. 比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts ...

  8. Round 0: Regionals 2010 :: NEERC Eastern Subregional

    Round 0: Regionals 2010 :: NEERC Eastern Subregional 贴吧题解(官方)? 网上的题解 水 A Murphy's Law 题意:Anka拿着一块涂着黄 ...

  9. python读写Excel文件_xlrd模块读取,xlwt模块写入

    一.安装xlrd模块和xlwt模块(服务器) 1. 下载xlrd模块和xlwt模块 到python官网http://pypi.python.org/pypi/xlrd下载模块.下载的文件例如:xlrd ...

  10. [bzoj1251]序列终结者——splay

    题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A.B.C.D.一看另一道题,又是一个序列 要支持几种操作:D.C.B.A.尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技 ...