@Serg0592

Не выводится картинка, как вывести?

В шаблоне не выводится картинка, я уже не знаю что не так.

код:

Настройки
# настройка обработки медиафайлов
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'


Модель
from django.db import models

# Create your models here.

# импорт пользователя
from employees.models import Employee

# класс каталога
class Catalog(models.Model):
    # картинка каталога
    avatar = models.ImageField(verbose_name='Аватар', null=True, blank=True, upload_to='catalogs_avatar/')
    # создатель
    creator = models.ForeignKey(Employee, verbose_name='Создатель', null=True, on_delete=models.PROTECT,
                                related_name='creators', related_query_name='creators')
    # название
    name = models.CharField(verbose_name='Название', max_length=64)
    # описание
    desc = models.TextField(verbose_name='Описание', blank=True)
    # родительский каталог
    parent_catalog = models.ForeignKey('self', verbose_name='Родительский каталог', null=True, blank=True, on_delete=models.PROTECT)
    # позиция в каталоге
    list_position = models.IntegerField(verbose_name='Позиция в каталоге')
    class Meta:
        # абстрактная модель
        abstract = True


Контролер
from django.shortcuts import render

# Create your views here.

# импорт нужных контролеров
from django.views.generic.list import ListView
# импорт каталога
from catalogs.models import ArticlesCatalog
# импорт нужных моделей
from .models import Article, Point
# импорт модели фильтров
from .filters import ArticleFilter

# контролер списка статей
class ArticlesView(ListView):
    # модель
    model = Article
    # поле сортировки
    ordering = 'list_position'
    # шаблон
    template_name = 'articles.html'
    # переменная для обращения в шаблоне
    context_object_name = 'articles'
    # количество объектов на странице
    paginate_by = 10

# переопределяем функцию для получения списка
    def get_queryset(self):
        # забираем изначальную выборку контролера
        queryset = super().get_queryset()
        # добавляем модель фильтрации в выборку контролера
        self.filterset = ArticleFilter(self.request.GET, queryset)
        # возвразаем контролеру новую выборку
        return self.filterset.qs

# добавляем переменную фильтра в контролер для вызова в шаблоне
    def get_context_data(self, **kwargs):
        # забираем изначальный набор переменных
        context = super().get_context_data(**kwargs)
        # добавляем созданную выборку в набор переменных
        context['filterset'] = self.filterset
        context['base_catalogs'] = ArticlesCatalog.objects.filter(parent_catalog=None)
        # возвращем новый набор переменнных в контролер
        return context


Шаблон

{# Подключение index #}
{% extends 'index.html' %}

{# Подключение тегов #}
{% load custom_tags %}

{# Подключение заголовка #}
{% block title %}
Статьи
{% endblock title %}

{# Подключение контента #}
{% block content %}


{# Импорт контента #}
<h1>Статьи по категориям:</h1>

{# Перебор переменных их контролера #}
{# Проверка наличия статей #}
{% if base_catalogs %}
    {# Перебор статей из сета #}
    {% for catalog in base_catalogs %}
        <div>
            {# Проверка наличи аватара #}
            {% if catalog.avatar %}
                {# Вывод картинки если автар есть #}
                <div>
                    <img scr="{{ catalog.avatar.url }}">
                    <p>Картинка есть</p>
                </div>
            {% else %}
            <p>Картинки нет</p>
            {% endif %}
            <div>
                {# Вывод остальных атрибутов статьи #}
                <p>Название: {{catalog.name}}</p>
                <p>Описание: {{catalog.desc}}</p>
            </div>
        </div>
    {% endfor %}
{% else %}
{# Вывод сообщения, если статей нет #}
<div>Категорий нет!</div>
{% endif %}


{# Импорт контента #}
<h1>Все статьи:</h1>

{# Загрузка фильтров статей #}
<form action="" method="get">
    {{ filterset.form.as_p }}
    <input type="submit" value="Найти" />
</form>

{# Перебор переменных их контролера #}
{# Проверка наличия статей #}
{% if articles %}
    {# Перебор статей из сета #}
    {% for article in articles %}
        <div>
            {# Проверка наличи аватара #}
            {% if article.avatar %}
                {# Вывод картинки если автар есть #}
                <div>
                    <img scr="{{article.avatar}}">
                </div>
            {% else %}
            <p>Картинки нет</p>
            {% endif %}
            {# Вывод остальных атрибутов статьи #}
            <div>
                <p>Автор: {{article.author}}</p>
                <p>Название: {{article.name}}</p>
                <p>Описание: {{article.desc}}</p>
                <p>Категория: {{article.catalog.name}}</p>
            </div>
        </div>
    {% endfor %}
{% else %}
{# Вывод сообщения, если статей нет #}
<div>Статей нет!</div>
{% endif %}

{# Пагинация #}
<div>
    {# Информация о предыдущих страницах #}
    {% if page_obj.has_previous %}
        <a href="?{% url_replace page=1 %}">1</a>
        {% if page_obj.previous_page_number != 1 %}
            ...
            <a href="?{% url_replace page=page_obj.previous_page_number %}">{{ page_obj.previous_page_number }}</a>
        {% endif %}
    {% endif %}

    {# Информация о текущей странице #}
    {{ page_obj.number }}

    {# Информация о следующих страницах #}
    {% if page_obj.has_next %}
        <a href="?{% url_replace page=page_obj.next_page_number %}">{{ page_obj.next_page_number }}</a>
        {% if paginator.num_pages != page_obj.next_page_number %}
            ...
            <a href="?{% url_replace page=page_obj.paginator.num_pages %}">{{ page_obj.paginator.num_pages }}</a>
        {% endif %}
    {% endif %}
</div>
{% endblock content %}


На выводе картинки просто нет.
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы