#django #django-templates
#django #django-templates
Вопрос:
Предположим, что мой файл шаблона:
... {% block block1 %}Lorem ipsum dolor sit amet, {{variable}} adipiscing {% endblock %} ...
Используя template API, я хочу захватить содержимое блока «block1» без рендеринга содержимого:
Lorem ipsum dolor sit amet, {{variable}} adipiscing
Ответ №1:
Вы можете получить к нему доступ следующим образом:
from django.template.loaders import app_directories
loader = app_directories.Loader()
src = loader.load_template_source('app/index.html', ['templates',])
['templates',]
Параметр необходим, потому что он выполняет поиск только по папкам «templates» в приложениях, а не по основной папке «templates» в корне вашего проекта.
Комментарии:
1. Извините, но это не то, что я хочу. Я хочу, используя template API, «разобрать» шаблон файла, чтобы извлечь только содержимое для определенного блока (без рендеринга).
2. Я думаю, это все, что у вас есть… вы можете получить доступ к найденным блокам, но они сохраняются только после того, как они прошли через лексер и синтаксический анализатор Django: тогда необработанные данные шаблона больше не доступны. Итак, это самое близкое к этому, что вы можете сделать. Это означает, что вам придется самостоятельно анализировать шаблон, но я признаю, что на самом деле это больше не использует API: вы могли бы просто загрузить файл с диска и проанализировать его затем. Но опять же, насколько я знаю, это самое близкое, что вы можете получить.
3. Хорошо, спасибо. Я задавался вопросом, возможно ли это с помощью API. Но поскольку это невозможно, я сам разберу файл.