@Sazoks

Django Middleware | Как бороться с неявностью при добавлении объектов в контекст шаблонов через middleware?

Я новичок в Django. Столкнулся с такой задачей. В шапке сайта есть выпадающее меню услуг. Услуга - это модель для БД. Я беру список всех услуг, отправляю в шаблон, шаблонизатор по этим услугам строит менюшку и отправляет готовую html'ку на фронт.

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

Проблема в том, что теперь например функция-контроллер страницы услуг выглядит так:
def services(request: HttpRequest) -> HttpResponse:
    """
    Функция-контроллер страницы услуг.

    :param request: Объект запроса.
    :return: Объект ответа со страницей услуг.
    """

    context = {}

    return render(request=request,
                  template_name='services/services.html',
                  context=context)

Т.е. допустим я открою свой код через месяц, погляжу, а у меня страница услуг не возвращает никаких услуг! Очень странно. Вот в этом и есть моя смута, в силу своей неопытности не знаю, что хорошо, а что плохо.
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Для описанной вами цели используется либо контекстный процессор, либо миксин представления.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы