我试图用javascript将一个查询集从Django传递给一个模板。
我尝试过不同的方法来解决这个问题:
1.正常方法- Javascript由于命名>对象:ID <,>对象:ID <,. 而使解析对象的工作变得一团糟
Django视图
django_list = list(Some_Object.objects.all())模板HTML + JS
<script type="text/javascript" >
    var js_list = {{django_list}};
</script>2. JSON方法- Django在将对象列表转换为json字符串时失败,不是JSON序列化的
Django视图
django_list = list(Some_Object.objects.all())
json_list = simplejson.dumps(django_list)模板HTML + JS
<script type="text/javascript" >
    var js_list = {{json_list}};
</script>因此,我需要一些帮助:)
有人有什么建议/解决办法吗?
谢谢!
发布于 2011-08-23 21:36:35
好吧,我找到解决办法了!
这主要是因为没有引用结果。当Javascript试图解析对象时,它不能被识别为字符串。
因此,第一步是:
var js_list = {{django_list}}; 改为:
var js_list = "{{django_list}}";之后,我意识到Django是在转义字符,所以我不得不这样替换它们:
 var myJSONList = (("{{json_list}}").replace(/&(l|g|quo)t;/g, function(a,b){
                return {
                    l   : '<',
                    g   : '>',
                    quo : '"'
                }[b];
            }));
 myData = JSON.parse( myJSONList );注意:我试图避免使用这个从Django转义字符
var js_list = "{{json_list|safe}}"; 但这不起作用,因为它会与引号混淆。
最后,在将JSON发送到Javascript之前,我找到了一种避免后端转换为JSON的逻辑的方法:
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 );我相信这是可以改进的,我把这个交给你;)
谢谢你的回答
希望这对其他人有帮助!
https://stackoverflow.com/questions/7165656
复制相似问题