Список Python не отображается в JavaScript
-
21-09-2019 - |
Вопрос
У меня есть javascript, который принимает две переменные, т.е. два списка: один - это список чисел, а другой - список строк из django/python.
numbersvar = [0,1,2,3]
stringsvar = ['a','b','c']
Числовая переменная отображается отлично, но когда я делаю {{stringsvar}}, она не отображается.
Решение
Возможно, будет лучше использовать JSON модуль для создания списков JavaScript?
>>> a = ['stste', 'setset', 'serthjsetj']
>>> b = json.dumps(a)
>>> b
'["stste", "setset", "serthjsetj"]'
>>> json.loads(b)
[u'stste', u'setset', u'serthjsetj']
Другие советы
Что содержит строковая переменная?Список или строковое представление списка?
Я предлагаю вам передать правильное строковое представление списка в JavaScript из метода представления в шаблон для рендеринга.Литералы массивов Python и javascript имеют одинаковый синтаксис, поэтому вы можете сделать:
def my_view(request):
return render_template("...", stringsvar=str(the_list))
И в шаблоне:
<script language="javascript">
stringsvar = {{ stringsvar }};
...
</script>
Или вы можете использовать сериализатор json, это дает дополнительное преимущество: вы сможете передавать и другие типы значений.
from django.core import serializers
def my_view(request):
return render_template("...", stringsvar=serializers.serialize("json", the_list))