如何使用django从html文件中遍历文件夹中的图像

nxagd54h  于 2022-12-01  发布在  Go
关注(0)|答案(1)|浏览(178)

这些是我想要访问的图像,其中文件夹名称的编号是ID

📂 img
  📂 1 
    📄 image1.png
    📄 image2.png
  📂 2
    📄 image2.png
    📄 image4.png

在www.example.com中views.py,我使用以下代码将img路径发送到html

images_path = os.path.join(STATIC_URL, 'webapp', 'img')
# code
return render(request, 'webapp/index.html', {
        'services': services,
        'images_path': images_path
    })

然后在index.html中我有这个

# code
{% for service in services %}
    # code
    <div id="imagesCarousel" class="carousel slide" data-bs-ride="carousel">
        <div class="carousel-inner"> 
        # here I want to access to every image and show it in the carousel
        </div>
    </div>

{% endfor %}

基本上我想做的是

{% for image in os.listdir(os.path.join(images_path, service.id)) %}

我怎么才能做到呢?
我尝试了上面的代码,但显然它不工作

ep6jt1vc

ep6jt1vc1#

一个可能的解决方案是在后端获取每个服务的映像路径,并以某种方式将其添加到上下文中。
例如,在views.py:

images_path = os.path.join(STATIC_URL, 'webapp', 'img')

# ... get services from somewhere

# add the image_paths as an attribute to each service
for service in services:
    image_paths = os.listdir(os.path.join(images_path, service.id))
    setattr(service, 'image_paths', image_paths)

return render(request, 'webapp/index.html', {
    'services': services,
})

然后在index.html中:

# code
{% for service in services %}
    # code
    <div id="imagesCarousel" class="carousel slide" data-bs-ride="carousel">
        <div class="carousel-inner"> 
        {% for image_path in image_paths %}
        <!-- whatever goes here, e.g. <img src="{{image_path}}"> -->
        {% endfor %}
        </div>
    </div>
{% endfor %}

相关问题