2015-01-13 12 views
10

Nei miei script.js:Django {% statico 'percorso' %} nel file javascript

pic.src = "/static/photos/1.jpg"; // This works 
pic2.src = "{% static 'photos/1.jpg' %}" // Does not work 

Perché nel mondo questo accade? Dal momento che nel mio home.html, il {% statico 'percorso' %} funziona:

{% load staticfiles %} 
<script src="{% static 'script.js' %}"></script> // This works 

Ed è {% del carico staticfiles%} o {% del carico statico%}? Entrambi funzionano per me, script.js è caricato.

+0

Sì, perché il file html è un modello ma i file statici non sono trattati come tali. –

+0

Grazie per la tua risposta veloce Simeon! Quindi pic.src = "static/photos/1.jpg" è l'unico modo? – lucahuy

+0

Se vuoi davvero che il tuo javascript sia reso da template/viste, puoi farlo facilmente. Ma probabilmente non è quello che vuoi. Più probabilmente, si desidera che la maggior parte dei file j siano file statici e quindi di aggiungere codice specifico per la vista nella parte inferiore di un modello in un elemento

2

È possibile assegnare il percorso nel modello e quindi utilizzarlo nel file javascript.

Template:

<script> 
    var url = "{% static 'photos/1.jpg' %}"; 
</script> 

Javascript:

pic2.src = url 
3

Se avete bisogno di molti statico (o media) url di nei file .js, questo potrebbe essere più conveniente:

<script> 
    var static_url = "{% get_static_prefix %}"; 
    var media_url = "{% get_media_prefix %}"; 
</script> 

poi entrambi url di sono liberamente disponibili in tutti i file javascript.

+0

ciò causerà un problema con collectstatic sulla distribuzione. –

+0

@NK Che tipo di problema? – knbk

+0

Pensavo che la creazione di url come questa causasse il problema: per tutti gli URL non creati con {% static%}, le risorse non venivano raccolte. Ma in seguito scoprii che il problema era qualcos'altro, e questi potrebbero essere raccolti nella fase di postprocessing. –

Problemi correlati