如何在 python django 中返回字典并在 javascript 中查看?

Posted

技术标签:

【中文标题】如何在 python django 中返回字典并在 javascript 中查看?【英文标题】:how to return a dictionary in python django and view it in javascript? 【发布时间】:2011-09-22 00:10:49 【问题描述】:

在我看来,我要返回这个:

    data = 'val1' : 'this is x', 'val2' : True
    return HttpResponse(data)

我想在我的 javascript 中使用字典中的这些信息。有点像这样:

            function(data) 
                if (data["val2"]) 
                    //success
                    alert(data["val1"]);
                
            

但是我的 javascript 不起作用。没有弹出警报,我知道字典在离开我的 python 视图时有信息。

如何在我的 JS 中读取这些信息?


好的,所以视图的答案是 simplejson.dumps(data)。 现在,当我在模板上的 JS 中执行警报(数据)时,我得到 'val1' : 'this is x', 'val2' : True。 现在我该如何管理问题的第二部分,即读出像

这样的值
        function(data) 
            if (data["val2"]) 
                //success
                alert(data["val1"]);
            
        

更新: simplejson.dumps(data) 将字典转换为字符串。因此,在 javascript 中,您需要将字符串转换为对象。 这是最简单但显然不安全的方法。

var myObject = eval('(' + myJSONtext + ')');

【问题讨论】:

Passing Python Data to JavaScript via Django的可能重复 即使你使用Ajax,上面问题的答案也会对你有所帮助。 您是否使用 AJAX (XmlHttpRequest) 发出请求? 是的,它是 ajax,这个问题确实帮助我理解我必须在视图中使用 jsdump,谢谢。现在我只想知道如何访问模板中的对象。 【参考方案1】:

你不能直接使用python对象,你必须先将它转换成JSON字符串 查看以下文档。

http://docs.python.org/library/json.html 还 http://www.json.org/

【讨论】:

【参考方案2】:

很简单:

import json
data = 'val1' : 'this is x', 'val2' : True
return HttpResponse( json.dumps( data ) )

【讨论】:

好的,我在 JS 'val1' : 'this is x', 'val2' : True 中有这个。现在我如何才能访问特定的值。像val1?喜欢这个数据[“val1”]?当我尝试 alert(data["val1"]); 是的,它仍然给出 undefined :(【参考方案3】:

JSON 是最简单的数据传输方式(您也可以使用 XML)。

在python中:

导入json 数据 = 'val1': "这是 x", 'val2': True 返回 HttpResponse(json.dumps(data))

在javascript中:

功能(数据) 数据 = JSON.parse(数据); 如果(数据[“val2”]) 警报(数据[“val1”]);

【讨论】:

这是正确的答案,或者像下面的 Shwetabh Sharan 的答案那样指定 mimetype【参考方案4】:

只需在 HttpResponse 中指定 mimetype

    return HttpResponse(
                        json.dumps("status":False, "message":"Please enter a report name.") ,
                        content_type="application/json"
                        )

【讨论】:

从 Django 1.9 开始,mimetype 已替换为 content_type

以上是关于如何在 python django 中返回字典并在 javascript 中查看?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django ajax 更新中返回 json 字典

Django迭代列表中的字典并在模板中显示数据

Python - 如何在 django 模板中为所有值并排显示两个键的字典值

Django:如何在 ajax 中返回模型表单集并在模板中使用

如何在django中将python字典动态输出到html?

pycharm打开Django项目,并在浏览器返回HelloWorld