Что такое контекст в 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 довольно хорошо описывается в официальная документация. Короче:

  1. в повседневном использовании, в основном косвенно, потому что вспомогательные функции построить Context для вас

  2. см. 1.: вам это нужно, только если вы используете низкоуровневый api

  3. нет, a контекст процессора - это функция, которая принимает запрос и возвращает словарь переменные, которые затем доступны во всех шаблонах, отображаемых с помощью RequestContext, например:

    def get_stuff_from_session(request):
        return {'stuff': request.session['stuff']}