О параметризации базовой страницы шаблона в Django - PullRequest
0 голосов
/ 04 марта 2020

У меня следующая проблема, есть базовый шаблон "base. html", который определяет заголовок по умолчанию и информацию о теле, которая будет использоваться другими страницами. Базовая страница содержит отображаемый параметр, который зависит от времени запроса нетривиальным образом.

base. html

<!DOCTYPE html>
    <head>
    ...
    {% block head_stuff %} {% endblock %}
    ...
    </head>

    <body>
    ...
    <p>Parameter that depends on the request time</p>
    ...
    {% block body_stuff %} {% endblock %}
    ...
    </body>
</html>

Используемые страницы это выглядит так:

a. html b. html c. html

{% extends "base.html" %}
{% block head_stuff %} ... {% endblock %}
{% block body_stuff %} ... {% endblock %}

То, что я хотел бы сделать, это визуализировать a.html, b.html, c.html без передачи информации об этом параметре на эти страницы в их представлениях или шаблонах. При отсутствии наследования можно было бы вызвать функцию render, передав параметр в контекст, но в этом случае никакие представления не используются для построения base.html.

Как я могу подойти к этой проблеме?

1 Ответ

1 голос
/ 05 марта 2020

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

def my_example(request):
    return dict(
        name="steve",
        dynamic_thing=some_other_function()
    )

, тогда шаблоны могли бы получить к ним доступ, используя {{ name }} и {{ dynamic_thing }}

...