为 AJAX 请求覆盖 generic.ListView 方法 DJANGO
Overriding generic.ListView methods for AJAX requests DJANGO
我最近开始使用 django 的内置通用视图(创建、更新等)所以我正在更新我的大部分旧视图以使用它们,其中之一是 ListView,具有分页功能。所以现在,它工作正常,当我获取该页面时,它按指示显示对象,并且分页工作正常。但我想在分页上使用 AJAX,这样我只需单击 "More" 按钮,它就会通过 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
在上面的代码片段中,您可以看到我包含了 return 如果请求是 AJAX
则有所不同的部分
我正在处理的当前视图如下:
class Items(ListView):
model = Items
paginate_by = 5
context_object_name = 'items'
template_name = 'web/items/index.html'
在正常的 GET 请求上工作正常,所以问题是我不知道要覆盖哪个 super()
方法,return 如果它的 AJAX 是不同的响应列表视图
使用dispatch
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
我最近开始使用 django 的内置通用视图(创建、更新等)所以我正在更新我的大部分旧视图以使用它们,其中之一是 ListView,具有分页功能。所以现在,它工作正常,当我获取该页面时,它按指示显示对象,并且分页工作正常。但我想在分页上使用 AJAX,这样我只需单击 "More" 按钮,它就会通过 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
在上面的代码片段中,您可以看到我包含了 return 如果请求是 AJAX
则有所不同的部分我正在处理的当前视图如下:
class Items(ListView):
model = Items
paginate_by = 5
context_object_name = 'items'
template_name = 'web/items/index.html'
在正常的 GET 请求上工作正常,所以问题是我不知道要覆盖哪个 super()
方法,return 如果它的 AJAX 是不同的响应列表视图
使用dispatch
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