In this lecture, we will talk about the comment management function. Each item in the database is from the user's comments. Therefore, the comment management in the background only has the comment list and comment deletion function, without adding comments or editing comments.
As usual, let's add related routes for comment management
path('comment_list/', views.CommentListView.as_view(), name='comment_list'), path('comment_delete/', views.comment_delete, name='comment_delete'),
First is the display of comment list. We implement it by CommentListView view class, which is still implemented by inheriting ListView. The code is as follows
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')
The display of comment list is realized by inheriting ListView, paging function is realized by get ﹣ context ﹣ data(), and search function is realized by get ﹣ queryset().
The effect is as follows
Next, we will continue to implement the deletion function, which is relatively simple. You only need to pass the video [ID] to the deletion interface through ajax. The ajax code is located in static / JS / myadmin / comment [list. JS. The interface for deleting comments is API [comment] delete, which will be called to comment [delete] finally. The code is as follows
@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"})
The logic is still clear, that is, first get the id of the comment, then get the comment, and finally delete it by instance.delete().