Правильный способ автогенерации нижнего колонтитула в Django на основе моделей - PullRequest
1 голос
/ 20 марта 2012

Я хочу добавить полный список категорий (каждая категория является моделью) внизу каждой страницы в моем шаблоне Django. Я бы хотел, чтобы он был автоматически сгенерирован. Я также предпочел бы не кормить список категорий из каждого представления.

Есть ли правильный способ сделать это, чтобы мне не приходилось каждый раз подавать его в шаблон?

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Вы можете либо

Написать собственный тег шаблона:
Использовать тег включения , который включает все ваши категории и отображает их в шаблоне.Включите этот шаблонный тег в ваш базовый шаблон.

from django import template
register = template.Library()

from app.models import Category

@register.inclusion_tag("footer.html")
def footer():
    categories = Category.objects.all()
    return {"categories": categories}

Это, вероятно, ваш лучший выбор для того, что вы хотите сделать.

Используйте специальный процессор контекста:
Создайте функцию , которая вытягивает все ваши категории и делает их доступными в контексте шаблона для всех страниц.

2 голосов
/ 20 марта 2012

Создайте шаблон тега , добавьте этот тег в базовый шаблон (или любой другой шаблон, имеющий общий нижний колонтитул).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...