2010-07-27 19 views
10

Ho provato ad accedere alla variabile del template django nella pagina html inline javascript, funziona bene. Ma se includo js usando <script src="..> allora non funziona. Questa limitazione o sto facendo qualcosa di sbagliato? Apprezzo molto il tuo aiuto.Accesso al template Django {{Variable}} da JavaScript

risposta

12

Il Javascript incluso non viene elaborato dal processore di template Django sul server, quindi non funzionerà. Se è necessario passare le informazioni tramite il modello ai file JavaScript inclusi, fare in modo che il modello crei un piccolo blocco <script> in cui viene dichiarata una variabile globale contenente tali variabili del modello. Quindi, il tuo file Javascript puro può ottenere i valori cercando l'oggetto globale creato da tale <script> dal modello.

+0

questo ha funzionato gr8 ... grazie! – Cool

5

La risposta di Pointy è corretta. Spesso trovo questo filtro utile per questa situazione:

@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)) 

poi in un tag <script> posso solo fare qualcosa di simile:

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

Lo userò una volta che implementerò JSON nel mio codice js. Grazie – Cool

+0

@JasonPrado: perché si dovrebbe fare questo? – Medorator

+0

Questa risposta ha 4 anni quindi scommetto che django ha una soluzione migliore ormai. Ma la mia idea qui è che è bello essere in grado di convertire un dizionario Python in un dizionario JSON in modo facile e sicuro. –