В шаблоне не выводится картинка, я уже не знаю что не так.
код:
Настройки
# настройка обработки медиафайлов
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 %}
На выводе картинки просто нет.