У нас есть приложение, представляющее собой сплав flask и django, и оно использует mako в качестве механизма шаблонов, мы хотим предоставить альтернативные шаблоны в некоторых представлениях, когда пользователь находится на мобильном устройстве, в настоящее время я сделал две подпапки. в папке моих шаблонов и переопределите метод рендеринга, чтобы получить соответствующий mako
templates
mobile
base.mako
index.mako
desktop
base.mako
index.mako
results.mako
Так, например, если я вызываю render("index.mako") и запрос имеет request.mobile==True
, то он преобразует URL-адрес файла в mobile/index.mako
, если 'mobile/{some template}.mako' не существует, он автоматически захватит 'desktop/{какой-то шаблон}.mako', так как все шаблоны существуют для рабочего стола. Теперь проблема связана с наследованием, скажем, у меня есть следующий шаблон
результаты.мако
<%inherit file="base.mako" />
<select>
------
</select>
и я вызываю render("results.mako") с request.mobile==True , путь будет преобразован в desktop/results.mako (поскольку results.mako не существует для мобильных устройств), а results.mako наследует от «desktop/base.mako» (поскольку он использует относительный путь), а не правильный «mobile/base.mako», который следует использовать, поскольку это мобильный телефон, а mobile/base.mako существует.
Любые идеи о том, как решить это элегантным способом (избегайте ifs внутри mako)? Может быть, каким-то образом изменив каталог, make считает, что шаблон находится?