Изображения не отображаются в шаблоне 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 %}
Дайте мне знать, если это сработает.