2017-06-29 6 views
1

私はDjangoを初めて使いました。これを達成するための最良の方法は何ですか?djangoテンプレート内の可変イメージ

私は自分の静的フォルダ内に大きな(15K +)量の画像を保持しており、それらをWebページ上に3つずつ提示したいと思います。

私の試み:

私はそうのように、私のテンプレート内の名前をハードコーディングできます

<div id="imageholder"> 
    <img src="{% static "images/im1.jpg" %}" /> 
    <img src="{% static "images/im2.jpg" %}" /> 
    <img src="{% static "images/im3.jpg" %}" /> 
</div> 

しかし、これは15K +画像用のオプションもちろんではありません。私は関数内の名前を変更するためにjQueryを使うことを考えました。例えば

<div id="imageholder"> 
</div> 
<script> 
    names = ['im1','im2','im3'] 
    for (i = 0; i < names.length; i++) { 
     html = `<img src="{% static "images/${names[i]}" %}" />` 
     $('#imageholder').append(html) 
    } 
</script> 

私はこれがうまくいくと信じて、まだそれは私が持っていないすべての名前のリストを持っている私を必要とします。私はおそらくos.listdir()を使うことができると思ったが、私はそれをウェブページにどうやって取得するのか分からない。あなたのビューで

答えて

3

コンテキストにリストを追加します。テンプレートで

images = os.listdir("path/to/images") #Can use glob as well 
context = {'images': images} 
return render(request,'/path/to/template',context} 

を:

​​
1

あなたはあなたの文脈でimages/imN.jpg文字列の反復可能な事前に生成、およびテンプレートでそれを反復処理することがあります。テンプレートでは

import os 
images = os.listdir('/path_to_static') 
return render(request,'template.html',{'images':images}) 

をテンプレートに画像を送信する場所から特定のビュー機能で

​​

 

<div id="imageholder"> 
{% for name in names %} 
    <img src="{% static name %}" /> 
{% endfor %} 
</div> 
1

{% for img in images %} 
<img src="{% static 'img' %}"> 
{% endfor %} 
関連する問題