基于django的视频点播网站开发-step10-后台评论管理功能

本讲中,我们会讲到评论管理功能,数据库中的每一条是来自用户的评价,因此后台中的评论管理只有评论列表和评论删除功能,没有增加评论和编辑评论。

照例我们先添加评论管理的相关路由

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()来实现搜索功能。

效果如下

下面我们继续实现删除功能,该功能比较简单,只需要通过ajax将video_id传给删除接口即可,ajax的代码位于static/js/myadmin/comment_list.js,删除评论的接口是api_comment_delete,最终会调用到comment_delete,代码如下

@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()删除之。

posted @   Tom19971220  阅读(7)  评论(0编辑  收藏  举报  
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
个人网站
点击右上角即可分享
微信分享提示