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?

31
demandé sur Pebbl 2009-04-11 16:02:06

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...

66
répondu Deniz Dogan 2009-04-11 12:22:38

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 }}

16
répondu Bartek 2018-09-10 16:10:27

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}}; 
6
répondu Tulio Nobrega 2013-01-25 21:10:43

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}}
0
répondu muak 2016-05-20 06:30:54