web-dev-qa-db-fra.com

Comment passer un tableau dans Django à un modèle et l'utiliser avec JavaScript

Je souhaite passer un tableau à un modèle et l’utiliser ensuite avec JavaScript.

Dans 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 lorsque je visite le site Web, il affiche:

var array1 = ['Str',500,20];

Que dois-je changer?

33
Christian

Essayez d'utiliser {{ array1|safe }} et voyez si cela fait une différence. Je n'ai pas testé cela, alors j'espère ne pas être trop voté si c'est incorrect ...

70
Deniz Dogan

Comme mentionné, vous pouvez utiliser le filtre |safe pour que Django ne désinfecte pas le tableau et le laisse tel quel.

Une autre option, et probablement la meilleure à long terme, consiste à utiliser le module simplejson (inclus avec Django) pour formater votre liste Python en un objet JSON dans lequel vous pouvez recracher du Javascript. Vous pouvez parcourir l'objet JSON comme vous le feriez avec 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 }}

16
Bartek

À Django:

from Django.utils import simplejson
json_list = simplejson.dumps(YOUR_LIST)

ET PASSER "json_list" EN CONTEXTE

EN JS:

var YOUR_JS_LIST = {{YOUR_LIST|safe}}; 
6
Tulio Nobrega

Cela pourrait être fait par les sérialiseurs de base Django. Tout ce que vous avez à faire est de sérialiser vos données dans json et de les transmettre à un modèle.

data = serializers.serialize("json", <list>)
return render(request, 'view.html', {'data':data})

Dans votre modèle, enregistrez cette liste dans une variable javascript.

var list = {{data|safe}}
0
muak