我试图通过静态/文件夹循环图像。我可以在“静态”主文件夹中循环浏览图片,但是当我将它们放在“静态/文件夹”中时,我不确定如何在html中完成图片。
我的html行(当img在“静态”主文件夹中时有效)
{% for file in files %}
<img src=" {% static file %}" height="800">
<p>File name:{{ file }}</p>
{% endfor %}
我的views.py
def album1(request):
images = '/home/michal/PycharmProjects/Family/gallery/static/'
files = os.listdir(os.path.join(images))
context = {'files': files}
return render(request, 'gallery/album1/main.html', context)
如果我将视图更改为:
def album1(request):
images = '/home/michal/PycharmProjects/Family/gallery/static/'
files = os.listdir(os.path.join(images, 'folder'))
context = {'files': files}
return render(request, 'gallery/album1/main.html', context)
它按预期的那样在'static / folder /'中循环文件名,但是后来我不知道如何在html中更改它,因为其将文件名添加到:/ static / {{file}}而不是/ static / folder / {{文件}}。 我想我在此特定页面上缺少某些东西或需要更改静态加载的东西吗?
{% load static %} # either here
<img src=" {% static file %}"> # or here?
答案 0 :(得分:0)
您在文件名前添加文件夹名称:
from os.path import join
def album1(request):
images = '/home/michal/PycharmProjects/Family/gallery/static/'
files = os.listdir(join(images, 'folder'))
context = {'files': [join(folder, file) for file in files]}
return render(request, 'gallery/album1/main.html', context)
您可以使用|slice
template filter [Django-doc]在模板中进行切片:
{% for file in files|slice:':21' %}
<img src=" {% static file %}" height="800">
<p>File name:{{ file }}</p>
{% endfor %}
但是在视图中执行此操作效率更高,因为通过执行更少的join
调用可以节省周期,而且模板的效率比Python代码低。