18

Мне кажется, что все, что может сделать процессор контекста, может выполнять промежуточное программное обеспечение. Итак, в чем смысл процессоров контекста? Являются ли они просто промежуточными?Контекстные процессоры против промежуточного программного обеспечения в django

ответ

14

Контекстные процессоры используются для предоставления шаблонов дополнительным данным. Среднее программное обеспечение предназначено для перехвата объектов запроса/ответа и изменения их (или запуска других действий) каким-либо значимым образом.

1

Они работают на разных уровнях стека для разных целей. Его обычно трудно держать стеки рамки абсолютно ортодоксальными, особенно единственное, что веб-инфраструктура, такая как обработка Django, - это запрос и ответ. Да, мы могли бы использовать request.user вместо context.user через context_processor при рендеринге шаблона. Но вы можете не хотеть, чтобы атрибуты, которые используются только в шаблоне, устанавливаются для каждого запроса.

Кроме того, декоратор является гибким, чем промежуточное программное обеспечение для работы на уровне обзора, но его труднодоступное промежуточное программное обеспечение является декоратором-литом. Я бы хотел обработать контекстные процессоры как теги шаблона присваивания, но, кстати, загружал автоматически.

19

Продвинутое программное обеспечение выступает в качестве крючка в обработке запросов/ответа Django на низком уровне и является легким. Крючки доступны для запроса, ответа, просмотра, шаблона_репортажа и обработки исключений. Крюку может потребоваться изменить запрос до того, как его обработает, ему может потребоваться зарегистрировать информацию о запросе для целей отладки, проверить файл cookie, чтобы установить локальный, и так далее.

Подробнее о Middleware.

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

Подробнее о Context Processors.

Оба довольно просты в написании и имеют свою цель. Вот диаграмма, которая показывает, где промежуточный слой и контекст вписываются в в типичном потоке Джанго:

enter image description here

Джанго Блок-схема

  1. пользователя запрашивает страницу

  2. Запроса достигает Запрос промежуточного программные, который мог бы манипулировать или отвечать на запрос

  3. URLConffinds rela Просмотр с использованием URL-адресов.ру

  4. Посмотреть промежуточное программное званых, которые могли бы манипулировать или ответить на запрос

  5. Функция просмотра вызывается

  6. мнение может OPTIONALLY доступ к данным через модели

  7. Все модели к -DB осуществляются через менеджера

  8. При необходимости могут использоваться специальные контексты

  9. Контекст передается Шаблон для оказания