• 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

  • 相关阅读:
    开源牛人 zcbenz
    分享一个快速的Json(反)序列化开源项目 Jil
    影响当今世界发展的重要技术难题
    余额表的处理方法
    使用TypeScript开发程序
    docker 和 nginx 配合的一个坑
    Excel 的一些使用记录
    mysql 用户授权相关
    容器数量增加导致 fs.inotify.max_user_instances 超过限制
    在 EF Core 中如何输出 linq 转换后的 sql 语句
  • 原文地址:https://www.cnblogs.com/sellsa/p/8558483.html
Copyright © 2020-2023  润新知