2017-06-29 18 views
4

をレンダリング使用して、私が持っている辞書:パスJSON Djangoは私のviews.pyファイルで

data = {'pk': '1980.24', 'model': 'artworks.metaData', 'fields': {'medium': 'Oil on canvas ', 'description': 'missing', 'credit': 'Gift of Nicholas Wyeth, 1980 ', 'collection': 2, 'height': '21.7', 'culture': 'Missing value', 'depictedPeople': 'missing', 'creation_date': '1896 ', 'account': 'n/a', 'original_url': 'http://www.metmuseum.org/art/collection/search/10738?sortBy=Relevance&what=Canvas%7cOil+paintings&ao=on&ft=*&offset=0&rpp=100&pos=1', 'url': 'annotatie01.io.tudelft.nl/collections/Metropolitan/1980.24.jpg', 'title': 'Gooseberries ', 'object_number': '1980.24', 'width': '35.7', 'artist': 'Joseph Decker '}} 

を私は自分のWebページにこの辞書にアクセス/使用できるようにしたいです。

私の試み:私は私のviews.pyでレンダリングを使用してデータを送信しようとした

def foo(): 
    ctx = {'data':data} 
    return render(request, 'imageView/index.html', context=ctx) 

が使用してアクセスするには:

<script type="text/javascript"> 
    var received_data = "{{data}}"; 
</script> 

をこのデータを使用して送信されますが、文字化けしています。

"{&#39;pk&#39;: &#39;1980.24&#39;, &#39;model&#39;: &#39;artworks.metaData&#39;, &#39;fields&#39;: {&#39;medium&#39;: &#39;Oil on canvas &#39;, &#39;descripti...etc 

私はjson.dumps(data)JSON.parse(received_data)を使用してみましたが、これはエラーが発生した:短いで

Uncaught SyntaxError: Unexpected token & in JSON at position 1. 

にはどうすれば)(レンダリングジャンゴを使用してのPyからJSにJSONデータを送信することができますか?

答えて

5

最も簡単な方法は、のsimplejsonがジャンゴV1.5後に削除されたように思え

<script type="text/javascript"> 
    var received_data = "{{ data|safe }}"; 
</script> 
+0

|の機能は何ですか?オペレーター?名前は大丈夫なので、私はドキュメントを探します。 –

+0

その名前ではない。 djangoテンプレートフィルタを見つけようとすると、パイプ記号の後にフィルタを使うことができます。変数付き – Exprator

1

トリックを行うジャンゴ1.5以降の文字列にあなたの辞書を変換することです。それ以外

<script type="text/javascript"> 
    var received_data = "{{data|safe}}"; 
    console.log(received_data); 
</script> 

行います:imageView/index.html

from django.utils import simplejson 

def foo(): 
    js_data = simplejson.dumps(data) 
    render_template_to_response("imageView/index.html", {"data": js_data}) 

imageView/index.htmlキープで

import json 

def foo(): 
    js_data = json.dumps(data) 
    render_template_to_response("imageView/index.html", {"data": js_data}) 

保持:

<script type="text/javascript"> 
    var received_data = "{{data}}"; 
    console.log(received_data); 
</script> 
+0

になります。自分自身のバージョン番号を追加する必要があります。 –

関連する問題