Что такое контекст в Django?
Я новичок django, поэтому я пытаюсь понять концепцию контекста и контекстного процессора.
- что такое контекст и почему вы используете его?
- является ли контекст значением, которое необходимо иметь в наличии для использования в шаблоне?
- является ли контекст и контекстный процессор одинаковыми?
Я очень ценю ваш ответ. Заранее спасибо!
3 ответов
при использовании шаблона Django он компилируется один раз (и только один раз) и сохраняется для дальнейшего использования в качестве оптимизации. Шаблон может иметь имена переменных в двойных фигурных скобках, например {{ myvar1 }}, {{ myvar2 }}.
контекст-это словарь с именами переменных в качестве "ключа" и их значения "значение". Следовательно, если ваш контекст для вышеуказанного шаблона выглядит так: {myvar1: 101, myvar2: 102}, когда вы передаете этот контекст методу визуализации шаблона, {{ myvar1 }} будет заменено на 101 и {{ myvar2 }} на 102 в вашем шаблоне. Это упрощенный пример, но на самом деле объект контекста-это "контекст", в котором отображается шаблон.
Что касается ContextProcessor, это немного продвинутая концепция. Вы можете иметь в вашем settings.py файл перечислил несколько контекстных процессоров, которые принимают объект HttpRequest и возвращают словарь (аналогичный объекту контекста выше). Словарь (контекст), возвращаемый обработчиком контекста, объединяется в контекст, переданный вами (пользователем) Django.
прецедент для контекстного процессора - это когда вы всегда хотите вставить определенные переменные в свой шаблон (например, местоположение пользователя может быть кандидатом). Вместо того, чтобы писать код для вставки его в каждое представление, вы можете просто написать для него контекстный процессор и добавить его в настройки TEMPLATE_CONTEXT_PROCESSORS в settings.py.
надеюсь, что это имеет смысл. Спасибо класс!
-ОМР
A контекст это имя переменной ->значение переменной сопоставление, которое передается в шаблон.
контекст процессоры позвольте вам указать ряд переменных, которые будут установлены в каждом контекст автоматически – без необходимости указывать переменные в каждой render () звонок.
на Context
довольно хорошо описывается в официальная документация. Короче:
в повседневном использовании, в основном косвенно, потому что вспомогательные функции построить
Context
для вассм. 1.: вам это нужно, только если вы используете низкоуровневый api
-
нет, a контекст процессора - это функция, которая принимает запрос и возвращает словарь переменные, которые затем доступны во всех шаблонах, отображаемых с помощью
RequestContext
, например:def get_stuff_from_session(request): return {'stuff': request.session['stuff']}