2017-02-03 7 views
1

私のモデルからJavascriptでオブジェクトとしてデータを取得する必要があります。 私は私のJSコードでこれを使用します(「データ」は私のDjangoのビューに返されるコンテキストの一部である):Django - JavaScriptオブジェクトとしてjsonにモデルをシリアル化します。

var data= {{ data|safe }}; 

そして、私の見解では、私が持っている:

context = {'data': { 
      'model1': serializers.serialize('json', model1.objects.all()), 
      'model2': serializers.serialize('json', model2.objects.all()), 
      } 

問題私は持っています:それは単なる文字列であるので、私はコンテキスト変数に「安全」を使用していない限り

1)私は、「安全」を使用している場合でも)

2、JSにエラーが発生しますが、オブジェクトが使用できない(つまり、 d ata.model1 [0]は、配列の最初の要素ではなく["]を返します。

これを行う正しい方法は何ですか?

答えて

1

トラブルが値はdataが有効なJSONありながら、data自体はPythonの辞書があるということです

import json 

data = { 
     'model1': json.loads(serializers.serialize('json', model1.objects.all())), 
     'model2': json.loads(serializers.serialize('json', model2.objects.all())), 
     } 
context = {'data': json.dumps(data)} 

これはJSONとしては無効です。

おそらくこれを行う最も簡単な方法は、変数を分離するために、次のようになります。

var data = { 
    model1: {{ data.model1|safe }}, 
    model2: {{ data.model2|safe }} 
} 
+0

はこの作品、ありがとうございます。 – GuitarExtended

1

あなたはjsonモジュールを使用することができ、解決策は次のようになります。その後、var data = {{data|safe}}

関連する問題