Изображения не отображаются в шаблоне Django For Loop

Смотрите проблему здесь

Я хочу перебирать каталог статических изображений в Django. Изображения перебираются правильно, но что-то не так с моим синтаксисом <img src />. Я перепробовал множество вариаций на тему {{ flag }}, но ничего не получается. Кто-нибудь может дать совет?

В файле settings.py я создал следующий объект STATIC_ROOT:

STATIC_ROOT = '/Users/TheUnforecastedStorm/Desktop/Code_projects/Portfolio_Site/portfolio_site/entrance/static'

В файле views.py я присоединил этот путь к каталогу изображений и поместил список изображений в контекстный словарь. Затем я включил этот словарь в свой ответ:

import os
from django.conf import settings
from django.shortcuts import render

# Create your views here.
def index(request):
    # Create a dictionary
    context = {}

    # Join images directory to index.html view
    flags = os.listdir(os.path.join(settings.STATIC_ROOT, "entrance/images/"))  
    context['flags'] = flags
    
    # Return response
    return render(request, "entrance/index.html", context)

Затем я зациклил эти изображения в своем шаблоне:

<!DOCTYPE html>
{% load static %}
<html>
    <head>
        <link rel="stylesheet" href="{% static 'entrance/entrance.css' %}">
        <script src="{% static 'entrance/entrance.js' %}" type="text/javascript"></script>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>

    <body>
        {% for flag in flags %}
            <img src="{{ flag }}" alt="problem" />
        {% endfor %}
    </body>
</html>

@Mark1 Работая над своими комментариями выше, я не смог найти ничего, чтобы подтвердить это, но кажется, что тег шаблона {% static %} может принимать только один дополнительный аргумент для создания пути, так что вот что вы можете попробовать.

По вашему мнению:

def index(request):
    # Create a dictionary
    context = {}

    # Join images directory to index.html view
    flags = os.listdir(os.path.join(settings.STATIC_ROOT, "entrance/images/"))

    # ADD IN THIS LINE HERE
    flags = ['entrance/images/'+fl for fl in flags]


    context['flags'] = flags
    
    # Return response
    return render(request, "entrance/index.html", context)

Строка, которую я добавил, добавит "entry/images/" к началу всех имен файлов в директории, в которой вы ищете.

Затем в вашем шаблоне

{% for flag in flags %}
   <img src="{% static flag %}" alt="problem" />
{% endfor %}

Дайте мне знать, если это сработает.

Вернуться на верх