首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将对象从Django传递到Javascript DOM

将对象从Django传递到Javascript DOM
EN

Stack Overflow用户
提问于 2011-08-23 18:16:45
回答 14查看 72.1K关注 0票数 48

我试图用javascript将一个查询集从Django传递给一个模板。

我尝试过不同的方法来解决这个问题:

1.正常方法- Javascript由于命名>对象:ID <,>对象:ID <,. 而使解析对象的工作变得一团糟

Django视图

代码语言:javascript
运行
复制
django_list = list(Some_Object.objects.all())

模板HTML + JS

代码语言:javascript
运行
复制
<script type="text/javascript" >
    var js_list = {{django_list}};
</script>

2. JSON方法- Django在将对象列表转换为json字符串时失败,不是JSON序列化的

Django视图

代码语言:javascript
运行
复制
django_list = list(Some_Object.objects.all())
json_list = simplejson.dumps(django_list)

模板HTML + JS

代码语言:javascript
运行
复制
<script type="text/javascript" >
    var js_list = {{json_list}};
</script>

因此,我需要一些帮助:)

有人有什么建议/解决办法吗?

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2011-08-23 21:36:35

好吧,我找到解决办法了!

这主要是因为没有引用结果。当Javascript试图解析对象时,它不能被识别为字符串。

因此,第一步是:

代码语言:javascript
运行
复制
var js_list = {{django_list}}; 

改为:

代码语言:javascript
运行
复制
var js_list = "{{django_list}}";

之后,我意识到Django是在转义字符,所以我不得不这样替换它们:

代码语言:javascript
运行
复制
 var myJSONList = (("{{json_list}}").replace(/&(l|g|quo)t;/g, function(a,b){
                return {
                    l   : '<',
                    g   : '>',
                    quo : '"'
                }[b];
            }));

 myData = JSON.parse( myJSONList );

注意:我试图避免使用这个从Django转义字符

代码语言:javascript
运行
复制
var js_list = "{{json_list|safe}}"; 

但这不起作用,因为它会与引号混淆。

最后,在将JSON发送到Javascript之前,我找到了一种避免后端转换为JSON的逻辑的方法:

代码语言:javascript
运行
复制
var myDjangoList = (("{{django_list |safe}}").replace(/&(l|g|quo)t;/g, function(a,b){
            return {
                l   : '<',
                g   : '>',
                quo : '"'
            }[b];
        }));

myDjangoList = myDjangoList.replace(/u'/g, '\'')
myDjangoList = myDjangoList.replace(/'/g, '\"')

myData = JSON.parse( myDjangoList );

我相信这是可以改进的,我把这个交给你;)

谢谢你的回答

希望这对其他人有帮助!

票数 32
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7165656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档