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

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. sublime text : The emmet plugin doesn't work when tab key was pressed

    Today, I switched my sublime text to version 3. And then I found that  the emmet plugin doesn't work ...

  2. poj3375 Network Connection

    Description There are \(M\) network interfaces in the wall of aisle of library. And \(N\) computers ...

  3. 模拟赛 yjqa

    考场上怕是石乐志. 状态设计还是很自然的,求什么设什么. f[i]表示前i个人安排好,电梯最早回到0层的时间 转移的话,枚举上一次最后一个带走的是谁 f[i]=min(max(f[j],t[i])+2 ...

  4. Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路

    首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...

  5. Vim使用小记(二)插件管理

    By francis_hao    Mar 8,2017 Vundle Vundle,全称为Vim bundle,是一个插件管理器.可以对vim插件进行安装和卸载. Vundle的安装方法看这里[参考 ...

  6. Active Directory Domain Services in Windows Server 2016/2012

    Applies To: Windows Server 2016, Windows Server 2012 R2, Windows Server 2012 You will find links to ...

  7. spring和Quartz的定时功能

    一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...

  8. [BZOJ1031][JSOI2007]字符加密Cipher 解题报告

    Description 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...

  9. python3 匿名函数,map/reduce/filter等函数结合应用

    匿名函数就是不需要显式的指定函数 # 平方函数 def func1(x): return x**2 print(func1) # 平方函数匿名函数写法 func2=lambda x:x**2 prin ...

  10. inside a shard

    fsync sync fsync/syncsync is a standard system call in the Unix operating system, which commits to d ...