#python #linux #include #cherrypy #mako
#python #linux #включить #cherrypy #mako
Вопрос:
У меня есть приложение со следующими файлами
/path_to_app
app.py
/html
page.html
/js
page.js
В app.py Я загружаю и визуализирую шаблон mako. Файл шаблона page.html в каталоге html. Эта страница содержит строку:
<%include file="../js/page.js" />
который предназначен для поиска и включения соответствующей страницы javascript (после выполнения замен mako в этом файле). Это отлично работает на моей машине разработки Windows, но когда я развертываю на сервере Ubuntu Linux для дальнейшего тестирования, он выдает ошибку: TemplateLookupException: Template uri «../js/fund_page.js » недопустимо — оно не может быть относительным вне корневого пути.
изменение include, чтобы сделать его абсолютным для корня приложения:
<%include file="/js/page.js" />
не помогает, возвращает сообщение: TemplateLookupException: не удается найти шаблон для uri u’/js/fund_page.js «.
Какие изменения необходимы, чтобы иметь возможность использовать этот mako include в Linux, и можно ли выразить его таким образом, чтобы он был совместим как с Windows, так и с Linux?
Комментарии:
1. Просто примечание: это поведение было введено с Mako 0.5
Ответ №1:
Я решил эту проблему, используя простой способ перемещения включенного js-файла в тот же каталог, что и вызывающий его html-файл.
Ответ №2:
Вы должны добавить родительский каталог «js» в directories
параметр вашего экземпляра TemplateLookup. Например:
mako_lookup = TemplateLookup(directories=[ root "/project/templates",
root "/public"])