2020-05-20--Django项目19--授课教师页面

2020-05-21  本文已影响0人  program_white

讲师列表

把页面复制到templates文件下。
由于讲师和机构是在同一个app下,所以在organizations下的urls.py配置url:

 #讲师列表
    url(r'^teachers/$',TeacherListView.as_view(),name = 'teachers'),
    #讲师详情
    url(r'^teachers_detail/(?P<teacher_id>\d+)$',TeacherDetailView.as_view(),name = 'teachers_detail'),

在views中编写初步的视图类:

#讲师列表
class TeacherListView(View):
    def get(self, request, *args, **kwargs):
        all_teachers = Teacher.objects.all()
        return render(request,'teachers-list.html',{
            'all_teachers':all_teachers       #讲师
        })

#讲师详情
class TeacherDetailView(View):
    def get(self, request,teacher_id, *args, **kwargs):
        pass

在base.html中修改跳转链接部分:



修改授课教师的class值,如果跳转的路径的前13位是/org/teachers,那么就显示active值,同时也要修改授课机构的class值的判断条件为--如果路路径的前9位为/org/list,那么就显示active值。
使用模板继承优化代码:



这时候运行:

数据填充和分页

在后端orgnizations/views.py:

#讲师列表
class TeacherListView(View):
    def get(self, request, *args, **kwargs):
        all_teachers = Teacher.objects.all()

        # 经过过滤后的机构总数
        teacher_nums = all_teachers.count()

        # 分页部分
        # 获取page,如果没找到或者出错都置page为1
        try:
            pindex = request.GET.get('page', 1)
        except PageNotAnInteger:
            pindex = 1

        # 参数1:作用对象,参数2:单页显示数量,参数3:request
        p = Paginator(all_teachers, per_page=1, request=request)

        teachers = p.page(pindex)  # 获取page页的信息

        return render(request,'teachers-list.html',{
            'all_teachers':teachers,       #讲师
            'teacher_nums':teacher_nums      #讲师数量
        })

前端绑定三个部分

运行:



点击下一页或者2:


排序

根据人气进行排序
在view中添加:

    #人气排序
        sort = request.GET.get('sort','')
        if sort=='hot':
            all_teachers = all_teachers.order_by('-click_nums')     #根据点击数进行排序

        return render(request,'teachers-list.html',{
            'sort':sort             #获取的前端接口值
        })

分析:如果获取的接口值为hot,那么就根据点击数进行排序,记得用all_teachers接着,最后返回sort即可,用于样式的判断
前端代码:



根据sort值和接口值进行比较,判断是否显示active值。
运行:
后台数据:



前端展示:

跳转到讲师详情页面

修改跳转链接:



url已经设置好了,在view中写初步的视图函数:

#讲师详情
class TeacherDetailView(View):
    def get(self, request,teacher_id, *args, **kwargs):

       teachers = Teacher.objects.get(id=int(teacher_id))   #获取用户点击的讲师信息
       return render(request,'teacher-detail.html',{
           'teachers':teachers
       })

运行:



点击查看详情:



进入页面,但是没有css样式。

模板继承修改代码


运行:


填充数据库数据


运行:
点击这三处都可以进入详情页:



课程详情页:


上一篇下一篇

猜你喜欢

热点阅读