javascript - 将字符串列表从 Django 传递到 Javascript

标签 javascript jquery django unicode

我的 Django 对象有一个属性“City”。我正在尝试获取城市列表并使用 Jquery 在模板中捕获它(以在 X 轴上的图表中使用)。
我的问题是我无法去掉列表的 unicode 和引号。
(我设法为一个单一的值(value)做到这一点)。相反,我坚持这个:
[[[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读取 View 发送的上下文的方式
[[[u'Paris'], [u'Lyon']]"]

这是我想要得到的
['巴黎', '里昂']

这一定很简单,但我就是不知道该怎么做。 其他帖子不处理字符串列表。

知道我该怎么做吗?

最佳答案

当您在模板中执行 {{ city_array }} 时,您的列表将转换为字符串。这是通过在列表上调用 repr() 来完成的,它会递归地对其内容调用 repr()。因为您的字符串是 unicode,所以您会看到那些 unicode 文字,u'Paris'

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

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

然后做

var cities = {{ city_array|safe }};

在模板中。

请注意:不要将此用于用户 Controller 数据!请参阅 XSS Cheat Sheet by OSWASP以及关于 Django ticket 17419 的讨论了解更多信息。为了防止 XSS,你可以使用类似 SafeJSONEncoder from the django-cms project 的东西。 .

关于javascript - 将字符串列表从 Django 传递到 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21150133/

相关文章:

javascript - 需要在一个html表单中多次使用一个字段

javascript - jQuery - 如何在坐标系统中移动图形

python - 在本地工作正常,但在生产中我收到错误,说违反了外键约束

python - django 如何在 FilteredSelectMultiple 中显示用户全名

javascript - 如何使用该数组的默认值?直到第一个循环才显示结果

javascript - For 循环循环太多

javascript - 使用 Slick 在网页上按顺序淡入淡出一系列照片

javascript - jQuery AJAX 将 url 作为字符串传递

javascript - jquery ajax发送form.serialize,变量和数组全部作为数据

mysql - Django 查询集 : Why can't I filter an annotated QuerySet?