Lista de Python não entrando em JavaScript
-
21-09-2019 - |
Pergunta
Eu tenho um JavaScript que leva duas variáveis, ou seja, duas listas, uma é uma lista de números e a outra lista de strings de Django/Python
numbersvar = [0,1,2,3]
stringsvar = ['a','b','c']
O Numbersvar é renderizado perfeitamente, mas quando eu faço {{stringsvar}}, ele não o renderiza.
Solução
Talvez seja melhor usar um JSON Módulo para criar uma lista JavaScript?
>>> a = ['stste', 'setset', 'serthjsetj']
>>> b = json.dumps(a)
>>> b
'["stste", "setset", "serthjsetj"]'
>>> json.loads(b)
[u'stste', u'setset', u'serthjsetj']
Outras dicas
O que o Stringsvar contém? A lista ou a representação da string da lista?
Sugiro que você passe a representação correta da string javascript da lista do método de exibição para o modelo para renderizar. Os literais da matriz Python e JavaScript têm a mesma sintaxe, para que você possa fazer:
def my_view(request):
return render_template("...", stringsvar=str(the_list))
E no modelo:
<script language="javascript">
stringsvar = {{ stringsvar }};
...
</script>
Ou você pode usar o Serializer JSON, isso tem o benefício adicional de que você poderá passar também outros tipos de valores.
from django.core import serializers
def my_view(request):
return render_template("...", stringsvar=serializers.serialize("json", the_list))