基於django的視頻點播網站開發-step10-後臺評論管理功能

本講中,咱們會講到評論管理功能,數據庫中的每一條是來自用戶的評價,所以後臺中的評論管理只有評論列表和評論刪除功能,沒有增長評論和編輯評論。html

照例咱們先添加評論管理的相關路由ajax

path('comment_list/', views.CommentListView.as_view(), name='comment_list'),
path('comment_delete/', views.comment_delete, name='comment_delete'),
複製代碼

首先是評論列表的展現,咱們經過CommentListView視圖類來實現,該類依然是繼承ListView來實現的。代碼以下數據庫

class CommentListView(AdminUserRequiredMixin, generic.ListView):
    model = Comment
    template_name = 'myadmin/comment_list.html'
    context_object_name = 'comment_list'
    paginate_by = 10
    q = ''

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(CommentListView, self).get_context_data(**kwargs)
        paginator = context.get('paginator')
        page = context.get('page_obj')
        page_list = get_page_list(paginator, page)
        context['page_list'] = page_list
        context['q'] = self.q
        return context

    def get_queryset(self):
        self.q = self.request.GET.get("q", "")
        return Comment.objects.filter(content__contains=self.q).order_by('-timestamp')

複製代碼

經過繼承ListView來實現評論列表的展現,經過get_context_data()來實現分頁功能,經過get_queryset()來實現搜索功能。api

效果以下 bash

下面咱們繼續實現刪除功能,該功能比較簡單,只須要經過ajax將video_id傳給刪除接口便可,ajax的代碼位於static/js/myadmin/comment_list.js,刪除評論的接口是api_comment_delete,最終會調用到comment_delete,代碼以下ide

@ajax_required
@require_http_methods(["POST"])
def comment_delete(request): 
    comment_id = request.POST['comment_id']
    instance = Comment.objects.get(id=comment_id)
    instance.delete()
    return JsonResponse({"code": 0, "msg": "success"})
複製代碼

邏輯還算清晰,即先拿到評論的id,而後獲取到該條評論,最後instance.delete()刪除之。ui

相關文章
相關標籤/搜索