2012-07-19 15 views
8

Mi vista calcula un json y emite un json.dumps(), y estoy pasando esto como la clave del diccionario data. Estoy tratando de pasar esto a un elemento script en mi plantilla, pero cuando se renderiza, el navegador lo obtiene como una cadena escapada de python {"nodes": [{"count":...... que no es legible para el javascript. Lo que necesito es que Python lo envíe como una cadena escapada JS, algo así como {"nodes": [{"count":....... Intenté str(data) y eval(data) sin éxito. Básicamente, necesito que Python envíe la cadena como si estuviera imprimiéndola en la consola. Graciasjavascript legible desde python

+0

esta pregunta es de alguna ayuda para usted? http://stackoverflow.com/q/1445989/92493 –

+0

Creo que si lo está renderizando en su plantilla HTML y que esta plantilla HTML se enviará al navegador utilizando el tipo mime 'text/html' (o es variante) que el navegador escapará de las comillas y tal, así que creo que realmente depende del tipo de mimo que está enviando al navegador. – mouad

Respuesta

13

Si entiendo bien, usted desea utilizar un JSON en una plantilla. Para hacer eso, tiene que desactivar el escape, por ejemplo, así.

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

Esto funciona para mí:

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

Utilizo algo como esto cuando envío una simple respuesta HttpResponse, pero en este caso tuve que renderizar una plantilla. – leonsas

+0

Np. Me alegro de que la respuesta fuera simple. – Brandon

11

Tenga en cuenta que en lugar de utilizar

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

Usted puede simplemente utilizar un filtro:

{{ my_json|safe }} 
Cuestiones relacionadas