1. 程式人生 > >24、Django實戰第24天:講師列表頁

24、Django實戰第24天:講師列表頁

try object imp 圖片 light except div 分頁 integer

1、復制teracher-list.html到templates目錄下

2、編輯teacher-list.html,繼承base模板

技術分享圖片

3、編輯organization.views.py

...
from .models import Teacher

class TeacherListView(View):
    def get(self, request):
        all_teachers = Teacher.objects.all()
        return render(request, ‘teachers-list.html‘, {
            ‘all_teachers‘: all_teachers,
        })

4、配置url,編輯organization.urls.py

...
from .views import TeacherListView

urlpatterns = [
    ...
    url(r‘teacher/list/$‘, TeacherListView.as_view(), name=‘teacher_list‘ ),

]

5、修改index.html,base.html中的授課教師鏈接

技術分享圖片

6、先把所有的講師都展示出來

技術分享圖片

分頁

編輯organization.views.py

class TeacherListView(View):
    def get(self, request):
        all_teachers = Teacher.objects.all()
               
        # 分頁
        try:
            page = request.GET.get(‘page‘, 1)
        except PageNotAnInteger:
            page = 1
        p = Paginator(all_teachers, 2, request=request)
        teachers = p.page(page)

        return render(request, ‘teachers-list.html‘, {
            ‘all_teachers‘: teachers,
        })

編輯前端頁碼

技術分享圖片

修改前面的展示教師列表

技術分享圖片

人氣排序 和統計教師

編輯organization.views.py

class TeacherListView(View):
    def get(self, request):
        all_teachers = Teacher.objects.all()
        
        # 人氣排序
        sort = request.GET.get(‘sort‘, ‘‘)
        if sort:
            if sort == ‘hot‘:
                all_teachers = all_teachers.order_by(‘-click_nums‘)
        
        # 統計教師數
        teacher_nums = all_teachers.count()

        # 分頁
        try:
            page = request.GET.get(‘page‘, 1)
        except PageNotAnInteger:
            page = 1
        p = Paginator(all_teachers, 2, request=request)
        teachers = p.page(page)

        return render(request, ‘teachers-list.html‘, {
            ‘all_teachers‘: teachers,
            ‘sort‘: sort,
            ‘teracher_nums‘: teacher_nums
        })

前端配置

技術分享圖片

講師排行榜

編輯organization.views.py

class TeacherListView(View):
    def get(self, request):
        all_teachers = Teacher.objects.all()

        # 人氣排序
        sort = request.GET.get(‘sort‘, ‘‘)
        if sort:
            if sort == ‘hot‘:
                all_teachers = all_teachers.order_by(‘-click_nums‘)

        # 統計教師數
        teacher_nums = all_teachers.count()
        
        # 講師排行榜
        rank_teachers = all_teachers.order_by(‘-click_nums‘)[:2]

        # 分頁
        try:
            page = request.GET.get(‘page‘, 1)
        except PageNotAnInteger:
            page = 1
        p = Paginator(all_teachers, 2, request=request)
        teachers = p.page(page)

        return render(request, ‘teachers-list.html‘, {
            ‘all_teachers‘: teachers,
            ‘sort‘: sort,
            ‘teracher_nums‘: teacher_nums,
            ‘rank_teachers‘: rank_teachers,
        })

前端展示

技術分享圖片

24、Django實戰第24天:講師列表頁