Django template - глобальное пространство имен шаблона как значение параметра для тега включения
У меня есть шаблон Django для рендеринга таблиц, который я могу успешно включать в другие свои шаблоны. Я принимаю префикс и параметр пространства имен, где пространство имен является ключом в контексте рендеринга:
{% include "table.html" with prefix=name|add:"_" namespace=rubric1 %}
, а в шаблоне я использую, например,
{% for object in namespace.object_list %}
...
{% endfor %}
Мой контекст рендеринга выглядит следующим образом:
context = {
'some_var': ...,
'rubric1': {
'object_list': ...,
'direction': ...,
'orderby': ...,
'total': ...,
'page': ...,
...
},
'rubric2': {
'object_list': ...,
...
},
}
Теперь я хочу использовать этот шаблон в ListView
, где эти ключи находятся в корне контекстного пространства имен:
context = {
'some_var': ...,
'object_list': ...,
'direction': ...,
'orderby': ...,
'total': ...,
'page': ...,
...
}
Как указать тегу включения использовать корень контекста рендеринга в качестве пространства имен?
Существует ли специальная переменная для этого? Например:
{% include "table.html" with prefix=name|add:"_" namespace=global_template_namespace %}
Или я могу как-то использовать контекст with
? Например:
{% with global_template_namespace as ns %}
{% include "table.html" with prefix=name|add:"_" namespace=ns%}
{% endwith%}
Я также думал о simple_tag
, который непосредственно возвращает контекст, но не смог использовать результат в качестве аргумента:
@register.simple_tag(takes_context=True)
def root_namespace(context):
return context