Ответ 1
Middleware действует как крючок в обработке запросов/ответа Django на низком уровне и является легким. Крючки доступны для запроса, ответа, просмотра, шаблона_репортажа и обработки исключений. Крюку может потребоваться изменить запрос до того, как его обработает, ему может потребоваться зарегистрировать информацию о запросе для целей отладки, проверить файл cookie, чтобы установить локальный, и так далее.
Подробнее о Middleware.
Контекстные процессоры просто изменяют контекст. Контекст - это сопоставление ключевых значений с переменными, переданными в шаблон. Процессор контекста принимает объект запроса в качестве своего аргумента и возвращает словарь элементов, которые объединяются в контекст. Контекст получает визуализацию вашего шаблона в соответствии с вашим представлением и придает все, что слияет с вашими контекстными процессорами. Вы можете думать о нем как о глобальной переменной контекста, доступной вам во всех ваших шаблонах.
Подробнее о Контекстные процессоры.
Оба довольно просты в написании и имеют свою цель. Вот диаграмма, в которой показано, где промежуточное ПО и контекст вписываются в типичный поток django:
Блок-схема Django
-
Пользователь запрашивает страницу
-
Запрос достигает запроса Middlewares, который может манипулировать или отвечать на запрос
-
URLConffinds связан с View, используя urls.py
-
Вызываются Middlewares, которые могут манипулировать или отвечать на запрос
-
Вызывается функция просмотра
-
В представлении можно получить доступ к данным через модели
-
Все взаимодействия между моделью и БД выполняются с помощью диспетчера
-
Представления могут использовать специальный контекст, если необходимо
-
Контекст передается в шаблон для рендеринга