Python List non ottenere in reso in javascript
-
21-09-2019 - |
Domanda
Ho un javascript che richiede due variabili cioè due liste uno è un elenco di numeri e l'altra lista di stringhe da Django / Python
numbersvar = [0,1,2,3]
stringsvar = ['a','b','c']
Il numbersvar è reso perfettamente, ma quando lo faccio {{}} stringsvar non rendono.
Soluzione
Forse sarà meglio usare un json modulo per creare un javascript liste?
>>> a = ['stste', 'setset', 'serthjsetj']
>>> b = json.dumps(a)
>>> b
'["stste", "setset", "serthjsetj"]'
>>> json.loads(b)
[u'stste', u'setset', u'serthjsetj']
Altri suggerimenti
Che cosa significa stringsvar contiene? La lista, o la rappresentazione di stringa della lista?
vi consiglio di passare la rappresentazione di stringa javascript corretta della lista dal metodo vista del modello per il rendering. Python e JavaScript letterali di array hanno la stessa sintassi, in modo che si possa fare:
def my_view(request):
return render_template("...", stringsvar=str(the_list))
E nel template:
<script language="javascript">
stringsvar = {{ stringsvar }};
...
</script>
In alternativa, è possibile utilizzare il serializzatore JSON, questo ha il vantaggio che si sarà in grado di passare altri tipi di valori pure.
from django.core import serializers
def my_view(request):
return render_template("...", stringsvar=serializers.serialize("json", the_list))