Python Django-使用ajax调用后数据过滤对象不会返回任何结果
我有以下Ajax POST调用:Python Django-使用ajax调用后数据过滤对象不会返回任何结果,python,ajax,django,Python,Ajax,Django,我有以下Ajax POST调用: $.ajax({ type: "POST", url: "{% url 'meds:prescription' %}", data: {selected:'selected' , csrfmiddlewaretoken: "{{ csrf_token }}"}, success: function(result) { window.location = "{% url 'meds:prescription' %}"
$.ajax({
type: "POST",
url: "{% url 'meds:prescription' %}",
data: {selected:'selected' , csrfmiddlewaretoken: "{{ csrf_token }}"},
success: function(result) {
window.location = "{% url 'meds:prescription' %}";
}
});
其中选择的是ID数组,例如[5、9、17]
以及以下观点:
class PrescriptionView(generic.ListView):
template_name = 'meds/prescription.html'
context_object_name = 'meds'
model = Medicament
def post(self, request, **kwargs):
selected_ids = self.request.POST.getlist('selected[]')
meds = self.get_queryset().filter(id__in=selected_ids)
return render(request, self.template_name, {'meds': meds})
def get_queryset(self):
ids = self.request.POST.getlist('selected[]')
return Medicament.objects.filter(id__in=ids)
def get_context_data(self, **kwargs):
ids = self.request.POST.getlist('selected[]')
context = super(PrescriptionView, self).get_context_data(**kwargs)
context.update({
'meds': Medicament.objects.filter(id__in=ids),
'date': datetime.now()
})
return context
我试图做的只是重定向到处方模板,使用post调用中的数据过滤对象,但我的模板只是空的,我不确定我做错了什么。您发送的是一个字符串
selected:“selected”
不是数组。在ajax处理程序中删除所选周围的单引号:
data: {selected:'selected' , csrfmiddlewaretoken: "{{ csrf_token }}"},
应该是:
data: {selected: selected, csrfmiddlewaretoken: "{{ csrf_token }}"},
首先,您似乎在发送一个字符串,“selected”
,而不是一个数组。其次,在视图中,出于某种原因,您试图获取selected[]
的值。我也尝试过,但它似乎也不起作用,没有结果!您是否也尝试过使用self.request.POST.getlist('selected[])更改self.request.POST.getlist('selected')
?回顾您的代码,您的代码中存在一些严重的缺陷。为什么要刷新ajax调用的success
window.location=“{%url'meds:prescription%}”代码>?为什么不从视图返回JSON响应?是的,我也尝试过。我之所以在成功时重定向,是因为我希望将数据显示在与我发送数据的页面不同的页面中。我不知道您希望如何实现这一点,您的帖子数据将在刷新时丢失。