Научиться писать свои теги, для случаев, когда не хватает представленных Джанго.
В данном случае мы хотим вывести:
- сколько вообще записей в блоге;
- последние 3 записи;
- самые комментируемые 5 записей.
Выглядеть будет так:
Джанго представляет большой набор тегов, смотреть здесь.
Если не хватает функциональности мы можем создать свой собственный тег, для этого Джанго
предлагает инструменты:
• simple_tag: обрабатывает данные и возвращает строку (просто тег).
• inclusion_tag: обрабатывает данные и возвращает обработанный шаблон (включение).
• assignment_tag: обрабатывает данные и устанавливает переменную в контексте (присваивание).
Внимательно смотрите уроки, очень подробно разобрали и домашнее задание внизу, особое внимание.
main.py
# -*- coding: utf-8 -*-
from django import template
from django.db.models import Count
register = template.Library()
from blog.models import Post
@register.simple_tag#(name='total_vasia')
def total_posts():
return Post.publiched.count()
Вернуться к домашнему заданию по агрегации:
Всё проделать, как сказал в полседнем уроке:
https://docs.djangoproject.com/en/1.10/topics/db/aggregation/
обратите внимание: когда будете работать со справкой, у вас должна стоять версия Джанго, модель которой обрабатываете, по ссылке дана Джанго 1,10.