@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)

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

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 12:53
1000 руб./за проект
19 апр. 2024, в 12:41
8000 руб./за проект
19 апр. 2024, в 12:05
1500 руб./в час