2015-01-13 5 views
10

で{%静的な 'パス' %}:Djangoの私のscript.jsでJavaScriptファイル

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

なぜ世界で、これはどうなりますか?

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

をそして、それは{%負荷staticfiles%}または{%負荷静的%}です:私のhome.htmlであるので、{%静的な 'パス' %}は動作しますか?両方とも私のために働く、script.jsが読み込まれます。

+0

はい、htmlファイルはテンプレートですが、静的ファイルはそのように扱われないためです。 –

+0

シメオンにお返事ありがとうございました!したがって、pic.src = "static/photos/1.jpg"は唯一の方法ですか? – lucahuy

+0

テンプレート/ビューからJavaScriptをレンダリングしたければ、簡単にそれを行うことができます。しかし、おそらくあなたが望むものではありません。おそらく、jsの大部分を静的ファイルにしてから、ビュー固有のコードをテンプレートの末尾に

2

パスをテンプレートに割り当ててから、JavaScriptファイルで使用することができます。

テンプレート:

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

Javascriptを:

pic2.src = url 
3

あなたの.jsファイルに多くの静的(またはメディア)のURLのが必要な場合は、これがより便利かもしれません:

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

そして、両方のURLのは、すべてのJavaScriptファイルで自由にご利用いただけます。

+0

これにより、配置時にcollectstaticに問題が発生します。 –

+0

@NKどのような問題がありますか? – knbk

+0

私はこのようなURLを作成することが問題を引き起こしていると思っていました。{%static%}で作成されていないURLの場合、リソースは収集されていませんでした。しかし、私は後でこの問題が他のものであることを発見しました。これらはおそらく後処理段階で収集されています。 –

関連する問題