Django不渲染ajax数据

时间:2019-06-09 20:53:20

标签: ajax django django-views

我的主页上有搜索输入。以前,我将数据保存在数据库中,并且我的方法将结果正确传递到了模板中。 但是,数据必须临时存储,因此我开始通过AJAX发送数据。重构代码后,结果将在我的视图中接收并格式化,但是我无法在结果模板中成功呈现上下文。

views.py中的方法有误:

def item_list(request):
    products = {}
    out = {}

    if request.is_ajax():
        query = request.POST.get('items')
        products = format_products(query)
        out = Sets.objects.filter(ItemInSet__item__name__in=[name for name, metrics in products.items() if metrics == '1']).exclude(ItemInSet__item__name__in=[name for name, metrics in products.items() if metrics == '0']).distinct()
    if out:
        paginator = Paginator(out, 10)  # show 10 per page
        page = request.GET.get('page', '1')
        try:
            out_paginated = paginator.page(page)
        except PageNotAnInteger:
            out_paginated = paginator.page(1)
        except EmptyPage:
            out_paginated = paginator.page(paginator.num_pages)
    else:
        out_paginated=out

    return render(request, 'item_list.html', {'products': products, 'results': out_paginated})

我可以在if request.is_ajax():中以及分页步骤之后访问数据。然后再次检查out,它似乎是空的,并且方法呈现空对象。呈现模板后,它会触发{%empty%}标签,并显示“没有符合您的查询的结果”。 视图是否以某种方式被调用了两次并清除了过程中的数据,或者数据是否很快发布但没有通过新的AJAX重新发送并因此丢失?

如何更正方法?还是最好在网址中添加格式化的查询并通过GET到达?

0 个答案:

没有答案