当前位置: 首页 > 面试题库 >

将对象从Django传递到Javascript DOM

商飞航
2023-03-14
问题内容

我正在尝试使用javascript将查询集从Django传递到模板。

我尝试了不同的方法来解决此问题:

1.普通方法-由于命名法[&gt Object:ID&lt,&gt Object:ID&lt,…],Javascript试图解析对象一团糟

Django视图

django_list = list(Some_Object.objects.all())

模板HTML + JS

<script type="text/javascript" >
    var js_list = {{django_list}};
</script>

2. JSON方法-Django无法将对象列表转换为不可序列化的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>

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

任何人有任何建议/解决方案?

谢谢!


问题答案:

好的,我找到了解决方案!

主要是因为没有引用结果。当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 );

注意:我试图避免使用this来转义Django中的字符

var js_list = "{{json_list|safe}}";

但这是行不通的,因为它与引号混淆了。

最终,我找到了一种避免在将后端发送到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 );

我敢肯定,这可以改善,我告诉你;)

谢谢你的回答

希望对别人有帮助!



 类似资料:
  • 问题内容: 我正在尝试使用Django和D3.js编写非常基本的条形图。我有一个名为play的对象,其中datetime字段称为date。我想做的是显示按月分组的播放次数。基本上我有两个问题: 我如何按月份将这些分组,并计算当月的播放次数 将这些信息从Django转换为D3可用的最佳方法是什么。 现在,我在这里查看了其他答案,并尝试了 这接近于我想要的信息,但是当我尝试将其输出到模板中时,它在月末

  • 问题内容: 我试图将对象数组从js传递到rails 滑轨 在这里,记录器语句总是让我把 我期望下面的登录轨道。 问题答案: 您应该在Javascript中使用Javascript,该Javascript以数组或哈希作为参数(因为它们是唯一有效的JSON构造)。它返回一个形式,该形式是序列化为JSON的Javascript对象。 在Ruby方面,您将收到JSON编码的字符串,因此需要(在Rails中

  • 我通过在我的Java类中调用下面的这个方法加载一个AngularJS页面,只是一个示例。如果我有一个对象,例如人,如何发送到角页面?

  • 假设我有两个公共课,如下所示: 将获取宽度和高度参数的椭圆类。 还有一个Shape类,它应该有任何不同的形式(这就是我扩展它的原因)。 编辑: 我们对GOval、其他类和move()方法了解不够,因此无法给出一个好的答案。 将另一个视为椭圆形类: 问题是,我如何获得在Shape类中的oval中创建的对象oval(

  • 在一个DOM操作练习中,我学习了如何使用纯JavaScript创建HTML元素。也就是像这样的东西: 我必须创建一个函数,允许用户将对象作为参数传入,以设置元素的属性。这个对象包含任意数量的键(属性)和值(属性值)。即属性可以是“src”,值可以是“image.jpg”。类似的东西。用户可以在调用函数时向此对象传递任意多的属性。 附带说明,对代码和JS都很新,请原谅我:P

  • 问题内容: 我在task.py中有一个任务,如下所示: 我试图将请求对象直接从几个传递给任务,如下所示: 我收到一个无法序列化的错误,我猜是吗?我该如何解决?麻烦的是我也有文件上传对象..它不是所有简单的数据类型。 问题答案: 因为请求对象包含对不实际序列化的内容的引用(例如上载的文件或与请求关联的套接字),所以没有通用的方法来对其进行序列化。 相反,您应该拔出并传递需要的部分。例如,类似: