Вопрос

У меня есть 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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top