2012-03-28 10 views
0

meiner Ansicht nach JQuery ich eine json Dump bin zu erzeugen:Django vorbei json Objekte

def myview: 
    ... 
    data = list(queryset) # a query set of values 
    json_dump = simplejson.dumps(data) 
    ... 
    return render_to_response(request, 'results.html', { 'json_dump' : json_dump}) 

meine Vorlage verweist auf eine JavaScript-Datei:

$(document).ready(function() { 
     // some stuff involving the json_dump var 
     ... 
    }; 

Meine Frage ist, da ich nicht json_dump passieren kann zu $(document).ready(function() direkt, was ist der beste Weg, um die json_dump Daten in die js zu bekommen?

Antwort

4

Wenn ich verstehe, was Sie zu tun versuchen, möchten Sie ein JSON-Blob in Ihre Vorlage übergeben, so dass es für eine JS-Datei zugänglich ist, die aus dem HTML referenziert wird?

In diesem Fall einrichten nur eine Variable, um den Wert in der Vorlage erhalten:

<script type="text/javascript"> 
    var json_dump = "{{ json_dump }}" 
</script> 

Und jetzt verwendet json_dump wo immer Sie in Ihrem JS mögen.

+0

zu erweitern, nur Ausgang das Json-Blob auf eine Variable in einem Skript-Tag in Ihrer Vorlage. –

+1

Muss die Vorlagensprache nicht in Anführungszeichen gesetzt werden, wenn sie in Javascript verwendet wird? das ist var json_dump = "{{json_dump}}"; – Sid

+0

@sid - danke, aktualisiert –

3

Die obige Antwort ist richtig, außer Sie haben Anführungszeichen um Ihren JSON-Dump, der wahrscheinlich nicht das ist, was Sie wollen. Um es zu benutzen, würden Sie (json_dump) eval müssen, anstatt nur als Objekt nennen ... ich es wahrscheinlich spiff würde ein wenig wie auf den Punkt:

<script> 
    var window.json_dump = {{ json_dump|safe }}; 
</script> 

<script> 
    // Then later in your other javscript which comes AFTER the above script tags... 
    $(document).ready(function() { 
    alert(window.json_dump.foo); 
    }); 
</script> 
+1

Ohne den Modifikator '| safe' ist der' json_dump' unbrauchbar. – IAbstract