Подтвердить что ты не робот

Что такое контекст в Django?

Я начинаю django, поэтому я пытаюсь понять концепцию контекстного и контекстного процессора.

  • Что такое контекст и почему вы его используете?
  • Является ли контекст значением, необходимым для использования в шаблоне?
  • Является ли контекст и обработчик контекста одинаковым?

Я высоко ценю ваш ответ. Спасибо заранее!

4b9b3361

Ответ 1

Когда вы используете шаблон Django, он компилируется один раз (и только один раз) и сохраняется для будущего использования в качестве оптимизации. Шаблон может иметь имена переменных в двойных фигурных скобках, например {{ myvar1 }} и {{ myvar2 }}.

Контекст - это словарь с именами переменных в качестве ключа и их значениями в качестве значения. Следовательно, если ваш контекст для вышеуказанного шаблона выглядит следующим образом: {myvar1:101, myvar2: 102}, при передаче этого контекста в метод визуализации шаблона {{ myvar1 }} будет заменен на 101 а {{ myvar2 }} на 102 в вашем шаблоне. Это упрощенный пример, но на самом деле объект Context - это контекст, в котором отображается шаблон.

Что касается ContextProcessor, это немного продвинутая концепция. В вашем файле settings.py вы можете указать несколько обработчиков контекста, которые принимают объект HttpRequest и возвращают словарь (аналогично объекту Context выше). Словарь (контекст), возвращаемый процессором контекста, объединяется с контекстом, переданным вами (пользователем) Django.

Вариант использования для контекстного процессора - это когда вы всегда хотите вставить определенные переменные в шаблон (например, местоположение пользователя может быть кандидатом). Вместо того чтобы писать код для вставки его в каждое представление, вы можете просто написать для него контекстный процессор и добавить его в настройки TEMPLATE_CONTEXT_PROCESSORS в settings.py.

Надеюсь, это имеет смысл. Спасибо, что приняли класс!

Ответ 2

A контекст - это имя переменной значение переменной, которое передается шаблону.

Контекстные процессоры позволяют указать количество переменных, которые автоматически устанавливаются в каждом контексте, без необходимости указывать переменные в каждом render().

Ответ 3

Context хорошо описывается в официальной документации. Короче говоря:

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

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

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

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