Итак, я сделал тривиальные прогревные приложения с помощью GAE. Теперь я хотел бы создать что-то с более сложной структурой каталогов. Что-то вроде:
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
.. и т.д. Контроллерами будут модули Python, обрабатывающие запросы. Затем им нужно будет найти шаблоны (в стиле Django) в связанных папках. Большинство демонстрационных приложений, которые я видел, разрешают пути шаблона следующим образом:
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
... свойство __ file __ преобразуется в текущий выполняемый скрипт. Итак, в приведенном выше примере, если скрипт Python выполнялся в controllers / controller1 /, «myPage.html» разрешился бы в тот же каталог - controllers / controller1 / myPage.html - и я бы предпочел чисто разделить мой Код и шаблоны Python.
Решение, которое я взломал вместе, кажется ... хакерским:
base_paths = os.path.split(os.path.dirname(__file__))
template_dir = os.path.join(base_paths[0], "templates")
Итак, я просто отрываю последний элемент пути для текущего запущенного скрипта и добавляю каталог шаблонов к новому пути. Другие (не специфичные для GAE) решения, которые я видел для разрешения путей Python, кажутся довольно тяжеловесными (например, разбиение путей на списки и манипулирование соответствующим образом). У Django, кажется, есть ответ на этот вопрос, но я бы предпочел использовать API GAE вместо создания полноценного приложения Django и его модификации для GAE.
Я предполагаю, что что-либо жестко запрограммированное не было бы начальным, так как приложения живут на бесконечной ферме серверов Google. Так что же лучше?