2017-06-29 86 views
1

我是Django的新手,我想知道实现这个目标的最佳方式是什么。Django模板中的可变图像

我在静态文件夹中放置了大量(15K +)的图像,我希望在网页上一次显示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字符串,并在模板遍历它。

​​

 

<div id="imageholder"> 
{% for name in names %} 
    <img src="{% static name %}" /> 
{% endfor %} 
</div> 
1
在从那里你想发送的特定视图功能

的图像模板

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

在模板:

{% for img in images %} 
<img src="{% static 'img' %}"> 
{% endfor %}