web-dev-qa-db-ja.com

Djangoの配列をテンプレートに渡し、JavaScriptで使用する方法

配列をテンプレートに渡し、その後JavaScriptを介して使用したいと思います。

私のviews.pyには:

arry1 = ['Str',500,20]
return render_to_response('test.html', {'array1': arry1})

そして私のテンプレートでは:

var array1 = {{ array1 }};

しかし、私がウェブサイトにアクセスすると、次のように出力されます:

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

何を変更する必要がありますか?

41
Christian

{{ array1|safe }}を使用してみて、違いがあるかどうかを確認してください。私はこれをテストしていないので、これが正しくない場合はあまり投票しないようにしてください...

87
Deniz Dogan

前述のように、|safe filter so Djangoは配列をサニタイズせず、そのままにします。

別のオプション、そしておそらく長期的にはより良い方法は、simplejsonモジュール(Djangoに含まれています)を使用してPythonリストをJSONオブジェクトにフォーマットすることですJavaScriptに戻ることができます。配列と同じように、JSONオブジェクトをループできます。

from Django.utils import simplejson
list = [1,2,3,'String1']
json_list = simplejson.dumps(list)
render_to_response(template_name, {'json_list': json_list})

そしてあなたのJavascriptでは、{{ json_list }}

18
Bartek

Djangoの場合:

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

コンテキストで「json_list」をパス

JS内:

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

Djangoコアシリアライザーによって実行できます。実行する必要があるのは、jsonでデータをシリアル化し、それをテンプレートに渡すことだけです。

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

テンプレートで、このリストをJavaScript変数に保存します。

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