Django, пользовательский тег ... как? - PullRequest
1 голос
/ 20 сентября 2009

Я хотел бы создать пользовательский тег django для отображения 10 названий записей из категории, в которой пользователь читает статью. Как я могу это сделать? Мне нужно передать категорию из фактической записи.

Ответы [ 3 ]

8 голосов
/ 20 сентября 2009

Лучший способ сделать это - включить тег. Это тег, который отображает фрагмент шаблона, который отображает 10 связанных статей.

Вы просто передаете текущую статью в тег и возвращаете контекст для фрагмента шаблона - то есть связанные статьи.

@register.inclusion_tag('related_articles.html')
def related_articles(article, count):
    category = article.category
    articles = category.article_set.exclude(id=article.id)[:count]
    return {'articles': articles}

Вам понадобится файл related_articles.html в каталоге шаблонов, который выводит статьи. Затем, чтобы вызвать его из основного шаблона, вы просто должны сделать

{% related_articles article 10 %}

где article - имя объекта статьи.

2 голосов
/ 20 сентября 2009

Почему пользовательский тег? Возможно, лучше, чище, добавить метод в модель статьи и вызвать его из шаблона. В зависимости от вашей модели метод будет практически тривиальным.

1 голос
/ 20 сентября 2009

Отметьте здесь для создания пользовательских тегов:

http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags

Вам необходимо передать соответствующий объект категории в контекст шаблона.

...