2010-07-27 20 views
10

Ich habe versucht, django Vorlage Variable in HTML-Seite inline Javascript zugreifen, es funktioniert gut. Aber wenn ich js mit <script src="..> einschließen, dann funktioniert es nicht. Ist diese Einschränkung oder ich etwas falsch machen? Ich schätze Ihre Hilfe sehr.Zugriff auf Django-Vorlage {{Variable}} von JavaScript

Antwort

12

Das enthaltene Javascript wird nicht vom Django Template Prozessor auf dem Server verarbeitet, so dass es nicht funktioniert. Wenn Sie Informationen über die Vorlage an enthaltene Javascript-Dateien übergeben müssen, erstellen Sie in Ihrer Vorlage einen kleinen <script>-Block, in dem eine globale Variable deklariert wird, die diese Vorlagenvariablen enthält. Dann kann Ihre reine Javascript-Datei die Werte abrufen, indem Sie nach dem globalen Objekt suchen, das von der Vorlage <script> erstellt wird.

+0

Das funktionierte gr8 ... Dank! – Cool

5

Pointy's Antwort ist korrekt. Oft finde ich diese Filter nützlich für diese Situation:

@register.filter(name='json') 
def _json(obj): 
    #remember to make sure the contents are actually safe before you use this filter! 
    return safestring.mark_safe(json.dumps(obj)) 

dann in einem <script> Tag kann ich nur so etwas tun:

window.g_details = {{ details|json }}; 
+0

Ich werde dies verwenden, sobald ich JSON in meinem Js-Code implementieren. Danke – Cool

+0

@JasonPrado: Warum sollte man das tun? – Medorator

+0

Diese Antwort ist 4 Jahre alt, also wette ich, dass django jetzt eine bessere Lösung hat. Aber meine Idee hier war, dass es schön ist, ein Python-Wörterbuch sicher und einfach in ein JSON-Wörterbuch konvertieren zu können. –

Verwandte Themen