как передать изображение в базовый шаблон / Все шаблоны Django

#python #django

#python #django

Вопрос:

из этого урока я хочу поместить некоторые изображения в панель навигации моего проекта Django.

Я определил context_processors.py так:

 from .models import Main_page

def get_labels_to_context(request):
    labels = Main_page.objects.all()
    
    return {
        'labels': labels,
    }
 

в Main_page модели у меня есть 4 изображения, которые должны отображаться на панели навигации:

models.py :

 class Main_page(models.Model):

    title = models.CharField(max_length=50, unique=True)
    
    label_services = models.ImageField(upload_to='photos/pages/main_page/', blank=True)
    label_products = models.ImageField(upload_to='photos/pages/main_page/', blank=True)
    label_support = models.ImageField(upload_to='photos/pages/main_page/', blank=True)
    label_company = models.ImageField(upload_to='photos/pages/main_page/', blank=True)
 

Я добавил контекстный процессор в settings.py файл.

В шаблоне я стараюсь показывать изображения таким образом:

 <a href="#!" class="view overlay z-depth-1 p-0 mb-2">
    <img    src="{{ labels.label_services.url }}"
            class="img-fluid" 
            alt="Services label">
</a>
 

но изображения не загружаются!

есть идеи?

Комментарии:

1.Так что (всегда) будет одна Main_page запись?

2. @WillemVanOnsem да.

Ответ №1:

нашел то, чего мне не хватало:

это labels dict, и его следует рассматривать как один!

 {% for label in labels %}
{% if label.label_services %}
    <a href="#!" class="view overlay z-depth-1 p-0 mb-2">
        <img src="{{ label.label_services.url }}"
             class="img-fluid" alt="Services label">
    </a>
{% endif %}
{% endfor %}