19、Django实战第19天:课程列表页
从今天开始,我们将完成"公开课"课程的相关功能.....
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天:课程列表页的更多相关文章
- [py][mx]django模板继承-课程列表页
课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以 ...
- mxonline实战10,课程列表页,课程详情页1
对应github地址:第10天 一. 课程列表页 1. 拷贝course-list.html到templates目录中 2. 编写url和view 在courses/views.py中新加
- mxonline实战13,授课讲师列表页,详情页,index页面全局导航
对应github地址:第13天 把teacher-list.html和teacher-detail.html拷贝过来 一. 授课讲师列表页 1. 修改html文件 把org-list.ht ...
- 微信小程序 项目实战(三)list 列表页 及 item 详情页
1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...
- Django实战(19):自定义many-to-many关系,实现Atom订阅
记得有人跟我说过,rails的has_many :through是一个”亮点“,在Django看来,该功能简直不值一提.rails中的many-to-many关联中,还需要你手工创建关联表(写 mig ...
- [Django实战] 第8篇 - 分页列表
当用户登录成功后,首先看到的是他自己之前提交的任务列表,本篇将实现该页面. 视图(views.py)里定义如下: from django.core.paginator import Paginator ...
- 14、Django实战第14天:列表筛选功能
今天完成的是点击这些条件进行机构的筛选 首先来完成城市:当用户点击城市的时候,我们自动给它加一个参数(city.id) 编辑organization.views.py 刷新页面,发现筛选功能已经OK了 ...
- 20、Django实战第20天:课程详情页
1.把course-detail.html复制到templates目录下 2.编辑course-detail.html,分析页面,继承base.html 3.编辑courses.views .... ...
- 16、Django实战第16天:优化url
今天完成的是一个优化url.... 前面我们所有的url都是配置在一个mxonline.urls.py中.因为我们根据项目实际情况配置了多个app,那么我们相应的url是可以配置在自己的app中的,这 ...
随机推荐
- 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 ...
- poj3375 Network Connection
Description There are \(M\) network interfaces in the wall of aisle of library. And \(N\) computers ...
- 模拟赛 yjqa
考场上怕是石乐志. 状态设计还是很自然的,求什么设什么. f[i]表示前i个人安排好,电梯最早回到0层的时间 转移的话,枚举上一次最后一个带走的是谁 f[i]=min(max(f[j],t[i])+2 ...
- Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...
- Vim使用小记(二)插件管理
By francis_hao Mar 8,2017 Vundle Vundle,全称为Vim bundle,是一个插件管理器.可以对vim插件进行安装和卸载. Vundle的安装方法看这里[参考 ...
- 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 ...
- spring和Quartz的定时功能
一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...
- [BZOJ1031][JSOI2007]字符加密Cipher 解题报告
Description 喜欢钻研问题的JS 同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作 ...
- python3 匿名函数,map/reduce/filter等函数结合应用
匿名函数就是不需要显式的指定函数 # 平方函数 def func1(x): return x**2 print(func1) # 平方函数匿名函数写法 func2=lambda x:x**2 prin ...
- inside a shard
fsync sync fsync/syncsync is a standard system call in the Unix operating system, which commits to d ...