2012-07-19 13 views
8

Mój widok oblicza json i wyprowadza json.dumps() i przekazuję to jako klucz słownika data. Próbuję przekazać to do elementu skryptu w moim szablonie, ale podczas renderowania, przeglądarka pobiera go jako łańcuch z python-escaped {"nodes": [{"count":......, który nie jest czytelny dla javascript. Potrzebuję Pythona, aby wysłać go jako łańcuch z ciągiem znaków JS, coś w tym stylu: {"nodes": [{"count":....... Próbowałem str(data) i eval(data) bez powodzenia. Zasadniczo potrzebuję Pythona, aby wysłać ciąg tak, jakby był drukowanie go do konsoli. Dziękijavascript-readable json z python

+0

jest to pytanie o jakiejkolwiek pomocy dla Ciebie? http://stackoverflow.com/q/1445989/92493 –

+0

Wierzę, że jeśli renderujesz go do swojego szablonu HTML i że ten szablon HTML zostanie wysłany do przeglądarki przy użyciu typu MIME "text/html" (lub wariant), niż przeglądarka wymyka się cytatom i tym podobnym, więc myślę, że to naprawdę zależy od typu mime, który wysyłasz do przeglądarki. – mouad

Odpowiedz

13

Jeśli dobrze rozumiem, chcesz użyć json w szablonie. Aby to zrobić, należy wyłączyć funkcję ucieczki, na przykład w ten sposób.

{% autoescape off %} 
var x={{json_var}} 
{% endautoescape %} 
1

Działa to dla mnie:

return HttpResponse(json.dumps({'foo' : 'bar'}, ensure_ascii=False), 
    mimetype='application/json') 
+0

Używam czegoś takiego podczas wysyłania prostego HttpResponse, ale w tym przypadku musiałem renderować szablon. – leonsas

+0

Np. Cieszę się, że odpowiedź była prosta. – Brandon

11

Zauważ, że zamiast używać

{% autoescape off %} 
    {{ my_json }} 
{% endautoescape %} 

można po prostu użyć filtru:

{{ my_json|safe }}