Задать вопрос
Mat1lda
@Mat1lda

Не находит самописный templatetag Django, почему — не понятно?

Собственно он есть в файле genres_list.py
Вот так он расположен:
movies
templatetags
__init__.py
genres_list.py

Вот так он вызывается в шаблоне
{% load genres_list %}
А вот так используется:
{% for genre in genres %}
            {{ genre.title }}
{% endfor %}


А вот и сам код его:
from django import template
from ..models import Genre


register = template.Library()


@register.inclusion_tag('movies/movie_list.html')
def genres():
    return {'genres': Genre.objects.all()}


Почему он не работает? PyCharm ругается, что его не видит ( вот в этой строке {% load genres_list %} )
И при добавлении на страницу появляется ошибка:

UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: QuerySet.
return self.paginator_class(

Либо я слепой чёрт, либо где - то подвох, имена файлов, полей раз 10 проверил и всё верно
  • Вопрос задан
  • 270 просмотров
Подписаться 1 Сложный 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
  1. Соизвольте дать правильное навзании функции (Например, get_genres())
  2. Укажите более явный импорт Жанров (from movies.models import Genre)
  3. Возвращайте правильно
  4. Подключите темплейттег в .html
  5. В .html вызовите функцию и дайте ей имя
  6. Переберите функцией for все данные

# Пункт 3. Возвращайте так в файле темплейттега
return Genre.objects.all()

# html files
{% get_genres as data_genres %}

# html files
{% for genre in data_genres %}
    {{ genre.title }}
{% endfor %}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы