Comment passer un tableau dans Django d'un modèle et l'utiliser avec JavaScript
Je veux passer un Tableau à un modèle et ensuite l'utiliser via JavaScript.
Mon views.py j'ai:
arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})
Et dans mon modèle:
var array1 = {{ array1 }};
Mais quand je visite le site, il sort:
var array1 = ['Str',500,20];
, Que dois-je changer?
4 réponses
Essayez d'utiliser {{ array1|safe }}
et voyez si cela fait une différence. Je n'ai pas testé cela, donc j'espère que je ne serai pas trop downvoted si cela est incorrect...
Comme mentionné, vous pouvez utiliser le filtre |safe
afin que Django ne désinfecte pas le tableau et le laisse tel quel.
Une autre option, et probablement la meilleure pour le long terme est d'utiliser le module simplejson
(Il est inclus avec django)pour formater votre liste Python dans un objet JSON dans lequel vous pouvez recracher au Javascript. Vous pouvez parcourir l'objet JSON comme vous le feriez pour n'importe quel tableau.
from django.utils import simplejson
list = [1,2,3,'String1']
json_list = simplejson.dumps(list)
render_to_response(template_name, {'json_list': json_list})
Et dans votre Javascript, juste {{ json_list }}
Dans Django:
from django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)
Et passer "json_list" dans le contexte
DANS JS:
var YOUR_JS_LIST = {{YOUR_LIST|safe}};
Cela pourrait être fait par les sérialiseurs de base django. Tout ce que vous devez faire est de sérialiser vos données dans json et de les transmettre au modèle.
data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})
Dans votre modèle, enregistrez cette liste dans la variable javascript.
var list = {{data|safe}}