Переопределение методов generic.ListView для запросов AJAX DJANGO

Недавно я начал использовать встроенные общие представления django (создание, обновление и т. д.). Поэтому я обновляю большинство своих старых представлений, чтобы использовать их, одним из них является ListView с разбиением на страницы. Итак, теперь он работает правильно, когда я ПОЛУЧАЮ эту страницу, он отображает объекты в соответствии с указаниями, и нумерация страниц работает нормально. Но я хочу использовать AJAX для разбивки на страницы, чтобы я просто нажимал кнопку «Дополнительно», и он получал объекты следующей страницы через ajax и добавлял их в конец файла . Итак, я изменил некоторые общие представления, чтобы включить AJAX, например:

class Delete(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
   login_url = LOGIN_URL
   model = Items
   success_url = reverse_lazy('web:member-area')

   def test_func(self):
      return not self.request.user.is_superuser and self.get_object().created_by == self.request.user

   def delete(self, request, *args, **kwargs):
      response = super().delete(request)
      if self.request.is_ajax():
          return JsonResponse({'success': 1}, status=200)
      else:
          return response

В приведенном выше фрагменте вы можете видеть, что я включил часть, где он возвращает что-то другое, если запрос AJAX

Текущее представление, над которым я работаю, выглядит следующим образом:

class Items(ListView):
   model = Items
   paginate_by = 5
   context_object_name = 'items'
   template_name = 'web/items/index.html'

который отлично работает с обычными запросами GET, поэтому проблема в том, что я не знаю, какие методы super() переопределить и вернуть другой ответ, если его AJAX в этом ListView


person Redgren Grumbholdt    schedule 28.01.2019    source источник


Ответы (1)


Используйте отправка

class Items(ListView):   
      def dispatch(request, *args, **kwargs):
             response = super().dispatch(request, *args, **kwargs)
             if request.is_ajax():              
                return JsonResponse({'success': 1}, status=200)
             else:
                return response 
person Ahtisham    schedule 28.01.2019