对 Django ajax 请求中的 JSON 数据和普通数据感到困惑
Posted
技术标签:
【中文标题】对 Django ajax 请求中的 JSON 数据和普通数据感到困惑【英文标题】:Confused with JSON data and normal data in Django ajax request 【发布时间】:2011-09-27 04:04:45 【问题描述】:我从互联网上阅读了有关 JSON 的信息,但我仍然没有掌握它。我正在看这篇文章
http://webcloud.se/log/AJAX-in-Django-with-jQuery/
我无法理解函数使用 JSON 的第一部分
def xhr_test(request, format):
if request.is_ajax():
if format == 'xml':
mimetype = 'application/xml'
if format == 'json':
mimetype = 'application/javascript'
data = serializers.serialize(format, ExampleModel.objects.all())
return HttpResponse(data,mimetype)
# If you want to prevent non XHR calls
else:
return HttpResponse(status=400)
我的主要问题是
-
函数从哪里得到
format
变量
格式是json
是指给函数的数据是json还是要接收的数据是json
谁能给我一个简单的例子,这个函数的输出是什么
data = serializers.serialize(format, ExampleModel.objects.all())
当我在 jquery 函数中获得响应时,我将如何使用该数据
如果我在上述函数中不使用 JSON,那么输入和返回的响应将如何变化
谢谢
【问题讨论】:
【参考方案1】:-
来自 urlconf,就像它在它下面的文章中所说的那样。
查询集将被序列化为 JSON。
它将是表示为 XML 或 JSON 的查询集。
python manage.py shell
是你的朋友。
您将对其进行解码,然后对其进行迭代。
您需要找到其他格式来对其进行序列化。
【讨论】:
其实我想看一下第 3,4,5 点的示例,以便更好地理解。如果那太多了,那么您可以指出一些互联网资源。我觉得我需要在 SO 中提出更多问题才能理解您的单行答案:) 第 3 条向您展示了如何获取它的示例。数字 4 是对解码库的调用和for
循环。 5 号独立;如果您不知道任何其他序列化格式,那么我建议您不要考虑它。
Ignacio Vazquez-Abrams 请不要介意,但我多次看到您的回答阻止了某人给出详细的答案。我并不是说你的答案是错误的,但有时提问的用户像我一样非常愚蠢,需要详细解释。一旦你给出答案,没有人会添加更多答案,因为他们都尊重你的声誉。我相信 TokenGuy 会在第 3,5 点给出解释,但他没有,因为他不想反对你。【参考方案2】:
函数从哪里获取格式变量
在实践中,可以通过多种方式填充此格式。 HTTP 提供了一个Accept:
标头,请求可以使用该标头来指示响应的首选Content-Type
。在客户端,您可以使用xhr.setRequestHeader('accept', 'application/json')
告诉服务器您希望以 json 格式响应。但在实践中,很少有框架真正做到这一点。这是 django,视图函数的参数通常在 urlconf 中设置,您可以像这样制作一个 urlconf:
urlpatterns = patterns('',
# ...
(r'^xhr_test.(?<format>.*)$', 'path.to.xhr_test'),
)
2 。格式是json是指给函数的数据是json还是要接收的数据是json
这个特定的视图对请求正文根本不做任何事情,并且肯定会在提供的format
中提供响应正文
4 .当我在 jquery 函数中得到响应时,我将如何使用该数据
根据您的请求需要有多复杂,您可以使用jQuery.getJSON
,它将通过解析 JSON 产生的常规 JavaScript 对象传递您的回调。如果您需要做更多的工作来获得正确的请求,您可以使用jQuery.parseJSON
来处理 json 数据,这将返回相同的 JavaScript 对象。
【讨论】:
非常感谢您的详细解释以上是关于对 Django ajax 请求中的 JSON 数据和普通数据感到困惑的主要内容,如果未能解决你的问题,请参考以下文章
无法将 ajax json 发布请求发送到 django 视图
如何在 django 的 AJAX 请求中返回多个 JSON 对象
使用 Ajax/Javascript/Django 的 CORS 请求