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

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

最新文章

  1. 本博客现已迁移到chuxiuhong.com
  2. 浅谈Android样式开发之布局优化
  3. 20160816_Redis一些资料
  4. 解决Genymotion下载设备失败的方法(Connection Timeout)
  5. BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理
  6. 【转】VSync Count 垂直同步
  7. Android XListView实现原理讲解及分析
  8. Machine Learning|Andrew Ng|Coursera 吴恩达机器学习笔记
  9. MySql准备工作
  10. JQ初级
  11. opencart3属性attribute实现换行等简单html代码
  12. Jquery ajax传递xml方式在ie8下兼容问题
  13. Shell-16--函数
  14. springmvc 中@Controller和@RestController的区别
  15. こだわり者いろはちゃん / Iroha's Obsession (暴力枚举)
  16. ubuntu计划任务的编写
  17. 765. Couples Holding Hands
  18. Django全面讲解(2/2)
  19. appium===使用weditor代替ui automator viewer
  20. SpringBoot05 数据操作01 -> JPA的基本使用、基本使用02

热门文章

  1. [USACO07DEC]美食的食草动物Gourmet Grazers
  2. POJ3415 Common Substrings 【后缀数组 + 单调栈】
  3. 洛谷P1339 热浪
  4. POJ1797:Heavy Transportation(改造Dijkstra)
  5. async的用法
  6. bzoj 1517 [POI2006]Met 贪心
  7. MFC 监控界面上所有文本框值的变化
  8. io缓冲为何可以提高效率
  9. php多虚拟主机配置
  10. 【BZOJ】1799: [Ahoi2009]self 同类分布