Пользовательский язык шаблонов для Django - PullRequest
1 голос
/ 09 июня 2011

Я хочу использовать другой язык шаблонов с Django.Это на самом деле HamlPy , язык, основанный на HAML, который напрямую переводится в шаблоны Django.Таким образом, я могу сделать что-то вроде

from hamlpy import Compiler
compiler = Compiler()
django_template_string = compiler.process(hamlpy_template_string)

Обратите внимание, что для этого не нужен какой-либо контекст - это просто текст шаблона предварительной обработки.Полученный текст можно затем использовать в качестве шаблона Django обычным способом.

Итак, я хочу обернуть этот код в некоторый код deus-ex-machina, который будет изящно вмешиваться в загрузку шаблона и обрабатывать его перед попыткой Djangoотрисовать или даже разобрать его.

Из того, что я вижу, если бы я мог перегрузить класс Parser и выполнить

def parse(str):
    str = preprocess(str)
    super().parse(str)

, это было бы наиболее прозрачным решением.

Я знаю о пользовательских тегах и фильтрах.Я понимаю, что мою задачу можно решить с помощью «глобального» тега preprocess_hamlpy.

Но мне интересно, можно ли это сделать по-другому.

1 Ответ

2 голосов
/ 09 июня 2011

Напишите шаблон загрузчика и поставьте его в свои настройки.

...