Liste Python ne pas avoir à rendu en javascript
-
21-09-2019 - |
Question
J'ai un javascript qui prend deux variables i.e. deux listes est une liste des numéros et l'autre liste de chaînes de django / python
numbersvar = [0,1,2,3]
stringsvar = ['a','b','c']
Le numbersvar est rendu parfaitement mais quand je fais {{}} stringsvar elle ne rend pas.
La solution
Peut-être qu'il sera préférable d'utiliser un JSON module pour créer une liste javascript?
>>> a = ['stste', 'setset', 'serthjsetj']
>>> b = json.dumps(a)
>>> b
'["stste", "setset", "serthjsetj"]'
>>> json.loads(b)
[u'stste', u'setset', u'serthjsetj']
Autres conseils
Qu'est-ce que contient stringsvar? La liste, ou la représentation de chaîne de la liste?
Je vous suggère de passer la représentation chaîne javascript correcte de la liste de la méthode d'affichage sur le modèle de rendre. Python et JavaScript littéraux de tableau ont la même syntaxe, de sorte que vous pouvez faire:
def my_view(request):
return render_template("...", stringsvar=str(the_list))
Et dans le modèle:
<script language="javascript">
stringsvar = {{ stringsvar }};
...
</script>
Vous pouvez aussi utiliser le sérialiseur JSON, ce qui a l'avantage supplémentaire que vous serez en mesure de passer d'autres types de valeurs.
from django.core import serializers
def my_view(request):
return render_template("...", stringsvar=serializers.serialize("json", the_list))