Django CBV повторяет один и тот же запрос на каждой странице

#django

#django

Вопрос:

Теперь я использую представление на основе классов в своем приложении Django, и это очень помогает мне быстрее развиваться.

У меня все еще есть вопрос о наилучшем способе реализации следующего:

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

Какой хороший способ сделать это с помощью Django? Можно ли создать представление на основе класса с пользовательским запросом в методе .get()?

Спасибо 🙂

Комментарии:

1. Напишите пользовательский обработчик контекста шаблона.

Ответ №1:

Для этого есть несколько разных способов.

Если вы постоянно используете представления на основе классов повсюду, вы могли бы создать общий базовый класс с пользовательским get_context_data методом, который добавляет ваши конкретные данные в контекстный словарь.

Но более обычные способы решения этой проблемы не имеют ничего общего с представлениями на основе классов, но применимы ко всем видам представлений. Это пользовательские теги шаблона и контекстные процессоры.

Для меня, вероятно, лучшим выбором является контекстный процессор: пока вы гарантируете, что ваш шаблон отображается с помощью RequestContext (что будет, если вы используете любое представление, наследуемое от TemplateView), ваши дополнительные данные всегда будут добавлены в контекст шаблона.

Комментарии:

1. Спасибо 🙂 ContextProcessor был тем, чего мне не хватало 😉