将对象从Django传递到Javascript DOM

编程入门 行业动态 更新时间:2024-10-25 09:26:51
本文介绍了将对象从Django传递到Javascript DOM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试将一个来自Django的查询集传递给一个带有javascript的模板。

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

1。正常方法 - 由于命名法[& gt Object:ID& lt,& gt Object:ID& lt,...]

Django View

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 View

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,函数(a,b){返回{l:'<',g:'>', quo:'''} [ b]; })); myData = JSON.parse(myJSONList);

注意:我试图避免使用此扩展Django中的字符:

var js_list ={{json_list | safe}};

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

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

var myDjangoList =(({{django_list | safe}})。replace(/&(l | g | quo) t; / g,函数(a,b){返回{l:'<',g:'>', quo:''} [b]; })); myDjangoList = myDjangoList.replace(/ u'/ g,'\'') myDjangoList = myDjangoList.replace(/'/ g,'\') myData = JSON.parse(myDjangoList);

我确信这可以是改进了,我告诉你了;)

感谢您的回答

希望对其他人有所帮助!

I'm trying to pass a Query Set from Django to a template with javascript.

I've tried different approaches to solve this:

1. Normal Approach - Javascript gets all messed up with trying to parse the object because of the nomenclature [ &gt Object:ID &lt, &gt Object:ID &lt,... ]

Django View

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

Template HTML + JS

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

2. JSON Approach - Django fails on converting the object list to a json string is not JSON serializable

Django View

django_list = list(Some_Object.objects.all()) json_list = simplejson.dumps(django_list)

Template HTML + JS

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

So, I need some help here :)

Any one has any suggestion / solution?

Thanks!

解决方案

Ok, I found the solution!

Mostly it was because of not quoting the results. When Javascript was trying to parse the object this wasn't recognized as string.

So, first step is:

var js_list = {{django_list}};

changed to:

var js_list = "{{django_list}}";

After this I realized that Django was escaping characters so I had to replace them like this:

var myJSONList = (("{{json_list}}").replace(/&(l|g|quo)t;/g, function(a,b){ return { l : '<', g : '>', quo : '"' }[b]; })); myData = JSON.parse( myJSONList );

Note: I tried to avoid escaping characters from Django using this:

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

But this doesn't work because it gets confused with the quotes.

Finally I found a way to avoid the logic on the backend of converting to JSON before sending it to 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 );

I'm sure this can be improved, I let this to you ;)

Thanks for your answers

Hope it helps to someone else!

更多推荐

将对象从Django传递到Javascript DOM

本文发布于:2023-10-07 17:36:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1470048.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对象   Django   DOM   Javascript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!