将Django中的字符串列表传递给Javascript

栏目: Python · 发布时间: 6年前

内容简介:翻译自:https://stackoverflow.com/questions/21150133/pass-a-list-of-string-from-django-to-javascript

我的Django对象有一个属性“City”.我正在尝试获取城市列表并使用Jquery在模板中捕获它(在X轴上的图表中使用).

我的问题是我无法摆脱unicode并引用列表.

(我设法为一个单一的价值做).相反,我坚持这个:

[“[[u’Paris’],[u’Lyon’]]”]

我已经尝试了很多东西,包括JSON.没有成功.

我的看法:

(实际上,其中一个尝试..)

def barchart1(request):
    city_array =[]
    for i in [1,MyObject.objects.count()]:
        objet = get_object_or_404(MyObject, pk=i)

        cities = [objet.city.city_name]
        city_array.append(cities)

return render (request, 'plot3/plot_page.html', {"city_array" : city_array})

我的JS:

<script type="text/javascript">
    var cities = ["{{ city_array }}"];
</script>

以下是JS如何读取视图发送的上下文

[“[[u’Paris’],[u’Lyon’]]”]

这是我想得到的

[‘巴黎’,’里昂’]

它必须是简单的东西,但我无法弄清楚如何做到这一点.

其他帖子不处理字符串列表.

知道我该怎么办?

在模板中执行{{city_array}}时,列表将转换为字符串.这是通过在列表上调用repr()来完成的,该列表以递归方式调用其内容上的repr().因为你的字符串是unicode,你会看到那些unicode文字,u’Paris’.

执行此操作的“正确”方法是将数据编码为json,例如在您的视图中:

import json
# ...
json_cities = json.dumps(city_array)
# ...
return render (request, 'plot3/plot_page.html', {"city_array" : json_cities})

然后呢

var cities = {{ city_array|safe }};

在模板中.

请注意:不要将此用于用户控制器数据!有关详细信息,请参阅 XSS Cheat Sheet by OSWASPDjango ticket 17419 的讨论.为了防止XSS,你可以使用像 SafeJSONEncoder from the django-cms project 这样的东西.

翻译自:https://stackoverflow.com/questions/21150133/pass-a-list-of-string-from-django-to-javascript


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

移动互联网商规28条

移动互联网商规28条

王吉斌、彭盾、程成 / 机械工业出版社 / 2014-6 / 49.00

每一次信息技术革命都会颠覆很多行业现有的商业模式和市场规则,当前这场移动互联网变革的波及面之广和蔓延速度之快,完全超出我们的想象。行业的边界被打破并互相融合,在此之前,我们只面临来自同行业的竞争,但是今天,我们不知道竞争对手会来自哪里。也许今天我们还是行业的巨人,但是明天就会被踩在脚下,当我们的体温犹热时,新的巨人已经崛起。诺基亚等传统科技巨头的衰退告诉我们,企业在一个时代的优势,到了另外一个新时......一起来看看 《移动互联网商规28条》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具