Как я могу отправить данные в базовый шаблон в Django? - PullRequest
2 голосов
/ 15 февраля 2010

Допустим, у меня есть сайт django и базовый шаблон для всех страниц с нижним колонтитулом, для которого я хочу отобразить список 5 лучших продуктов на моем сайте. Как мне отправить этот список в базовый шаблон для рендеринга? Каждому представлению нужно отправлять эти данные в render_to_response? Должен ли я использовать template_tag? Как бы вы это сделали?

1 Ответ

5 голосов
/ 15 февраля 2010

Вы должны использовать пользовательский контекстный процессор . При этом вы можете установить переменную, например, top_products, которое будет доступно во всех ваших шаблонах.

* 1006 Е.Г. *

# in project/app/context_processors.py
from app.models import Product

def top_products(request):
    return {'top_products': Products.objects.all()} # of course some filter here

В вашем settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    # maybe other here
    'app.context_processors.top_products',
)

А в вашем шаблоне:

{% for product in top_products %}
    ...
...