2017-12-20 6 views
0

私はdjangoに新しく、最終的にはDjangoで静的ファイルを使用することを学びましたが、{%静的ファイル名でファイル名をハードコーディングしていました。 jpg%}。しかし、ハードコードされたfilename.jpgを動的ファイル名に置き換えて文字列を作成しようとすると、出力が得られませんでした。連結された静的ファイルソースを読み込むことができません

動作しないコードスニペット:

<script> 
 
\t image_name = "1.png" \t 
 
\t static_start = "{% static '" 
 
\t static_end = "' %}" 
 
\t image_src = static_start.concat(image_name, static_end) 
 
\t window.alert(image_src) \t 
 
\t var para = document.createElement("img"); 
 
\t {% load static %} 
 
\t para.setAttribute("src", image_src) 
 
\t var element = document.getElementById("div_test"); 
 
\t element.appendChild(para); 
 
</script>

ワーキングコードスニペット:


 

 
<script>  
 
\t var para = document.createElement("img"); 
 
\t {% load static %} 
 
\t para.setAttribute("src", "{%static '1.png'%}") 
 
\t var element = document.getElementById("div_test"); 
 
\t element.appendChild(para); 
 
</script>

私がやろうとしているのは、私はどこかのAPIから取得している静的フォルダにイメージファイルをたくさん格納しています。これらのイメージをダウンロードした後、私は自分のWebページにロードしようとしています。なぜなら、静的ファイルを使用していて、ダウンロードしたファイルのファイル名を知りません。

文字列を直接渡している間は、文字列の連結が機能していないということです。

本当にありがとうございます。

P.S:上記の共有の例では、私は単純に1.pngを使用していますが、これは最終的に表示したいファイルの名前に置き換えられます。 get_static_prefix(私は実際に望んでいた方法)を使用して

の作業コード

<script> 
 
    image_name = "1.png" \t  \t 
 
    var para = document.createElement("img"); 
 
    {% load static %} 
 
    para.setAttribute("src", "{% get_static_prefix %}" + image_name) 
 
    var element = document.getElementById("div_test"); 
 
    element.appendChild(para); 
 
</script>

答えて

0

は、私はあなたがここでやろうとしているのか理解だと思うが、私はそれが可能だとは思いません。 Djangoテンプレートはサーバー上でレンダリングされ、JavaScriptはクライアント側でレンダリングされます。 JavaScriptでテンプレートタグを作成しようとしていますが、テンプレートタグはクライアント側で評価されず、文字列になります。

+0

あなたは、私はこのケースで行う必要があります他に何を示唆していますか? –

0

他の投稿を参照した後、私は間違っていたことを認識しました。私は、文字列の連結とエスケープ文字について正しくないものがあったと考えています。したがって、Djangoにはget_static_prefixのオプションがあります。それは私がその愚かな文字列連結の代わりに使用するはずだったのです。私は正確な働きかけの応答で私の質問を編集しました、まさに私が望んでいた方法です。

参考文献:Stackoverflow questionDjango tutorial

関連する問題