gpt4 book ai didi

javascript - 如何在 Django ajax 更新中返回 json 字典

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:23 29 4
gpt4 key购买 nike

我多次问这个问题,因为我没有收到任何适用的帮助。

我的问题是我不知道如何将查询结果作为 ajax 响应返回到模板。

我是这样做的:

if request.path == "/sort/":
sortid = request.POST.get('sortid')
locs = Location.objects.order_by(sortid)
if request.is_ajax():
return HttpResponse(locs,mimetype="application/json")

然后我的 ajax done 函数执行此操作:

}).done(function(data){
$('.sortierennach').html(data);
});

现在发生的是,它只是替换了 .sortierennach 的内容,它没有渲染 django dic,所以我可以这样做:

{% for loc in locs %}
{{loc.name}}
{% endfor %}

谁能帮帮我...非常感谢

最佳答案

您需要将对象列表导出到 JSON 字典。

if request.path == "/sort/":
sortid = request.POST.get('sortid')
locs = Location.objects.order_by(sortid)
if request.is_ajax():
import json
return HttpResponse(json.dumps(locs), mimetype="application/json")

但是,这需要您使用某种类型的客户端模板系统。

更好的方法是使用 Django 的 render_to_response 快捷方式。您实际上并不“需要”使用 JSON 进行响应。您可以只用字符串响应请求。

我通常为 AJAX 驱动的东西创建两个模板。第一个是部分模板,它只包含我想在 AJAX 更新期间更新的特定 HTML 部分。第二个是包装器,可以在正常调用 View 时使用。

一个简单的例子,这是我的 object_list.html:

<ul id='object-list'>
{% for object in object_list %}
<li>{{ object.value }}</li>
{% endfor %}
</ul>

这是我的 base.html:

<html>
<title>Example</title>
<body>
{% include 'object_list.html' %}
</body>
</html>

对于 View ,您需要这样做:

from django.shortcuts import render_to_response
from django.template import RequestContext

from models import Location

def view(request):
locs = Location.objects.order_by(sortid)
if request.is_ajax():
return render_to_response('object_list.html', {'object_list': locs}, context_instance=RequestContext(request))
return render_to_response('base.html', {'object_list': locs}, context_instance=RequestContext(request))

这让我们通过标准 GET 或 XHTTP 请求正常调用 View ,仅返回您要更新的部分 HTML。方便!

关于javascript - 如何在 Django ajax 更新中返回 json 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15105974/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com