Предположим, у меня есть сайт django и базовый шаблон для всех страниц с нижним колонтитулом, который я хочу отобразить на странице 5 лучших продуктов на моем сайте. Как я могу отправить этот список в базовый шаблон для рендеринга? Должно ли каждое представление отправлять эти данные в render_to_response? Должен ли я использовать template_tag? Как бы вы это сделали?Как отправить данные в базовый шаблон в Django?
ответ
Вы должны использовать custom context processor. С помощью этого вы можете установить переменную, например. top_products
, который будет доступен во всех ваших шаблонах.
E.g.
# 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 %}
...
Я попробую. Звучит так же, как и то, что я искал. –
Просто остаток. Процесс добавления контекстного процессора изменяется в более поздней версии Django. Квест проекта может быть удовлетворен в соответствии с принятым ответом этого вопроса также - https://stackoverflow.com/questions/34902707/how-can-i-pass-data-to-django-layouts-like-base-html-without-having -в-Provi – ni8mr
Всего голов вверх для тех, кто с помощью более поздних версий Джанго (т.е. 1.9): Кстати, что Джанго определяет, что его процессоры контекста изменились. Вместо добавления к TEMPLATE_CONTEXT_PROCESSORS
вы можете просто добавить строку в список Джанго контекстных процессоров:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'app.context_processors.your_processor', # CHANGE THIS
],
},
},
]
Все остальное то же самое. Надеюсь это поможет!
- 1. Django - включить шаблон приложения в базовый шаблон
- 2. Извлечь данные из базы данных в базовый шаблон Django Python
- 3. Базовый шаблон в многократном приложении Django
- 4. Базовый шаблон не загружается в Django
- 5. Как отправить строку base64 в шаблон Django
- 6. Где разместить базовый шаблон html в Django
- 7. Django, отправить словарь в шаблон
- 8. как отправить данные в базу данных django
- 9. Как я могу отправить данные в django?
- 10. Kendo шаблон отправить данные
- 11. Как передать данные django ajax в шаблон?
- 12. Используйте поддомены Django, чтобы отключить базовый шаблон
- 13. Django шаблон данные
- 14. Как отправить данные localStorage в Django?
- 15. Как отправить данные в партиях из django
- 16. Шаблон Django Rendering, включенный в шаблон
- 17. Django StreamingHttpResponse в шаблон
- 18. Meteor: Отправить данные в шаблон макета
- 19. Динамически выбирайте, какой базовый шаблон для расширения в django
- 20. Базовый шаблон в Hippo CMS
- 21. Динамически загружать данные в шаблон django
- 22. Получить данные после "?" в url, шаблон django.
- 23. Включить представление в базовый шаблон
- 24. Как переопределить базовый шаблон в PrestaShop 1.5.6
- 25. Как сделать html div в базовый шаблон?
- 26. Как загрузить базовый шаблон в воспламенителе кода
- 27. Как установить базовый шаблон в Locomotive.js?
- 28. Как отправить дополнительные данные в шаблон, когда Django ValidationError произошел в определенном поле?
- 29. Как я могу отправить в шаблон DJANGO переменную текущих данных?
- 30. django syndication: как отправить запрос, содержащий все фиды в шаблон
Хотя я уже ответил, вопрос был задан раньше: http://stackoverflow.com/questions/1030249/defining-global-variable-in-django-templates, http://stackoverflow.com/questions/2223429/ django-global-template-variables –