(UPDATE: Я сделал лучший вопрос с лучшим ответом here я собирался удалить этот вопрос, но некоторые ответы могут оказаться полезными для будущих искателей.).нужно упаковать шаблон jinja2 для питона
Мой вопрос примерно идентичен this, но этот ответ является уродливым (требуется структура dir, включая sharedtemplates/templates/templates/
), неполное, как опубликовано (пользователь «ответил» на свой вопрос), и предполагает некоторые знания, которых у меня нет.
Я работаю над своим первым веб-приложением на основе python. Компонент javascript находится в стадии разработки с использованием статической HTML-страницы. Теперь я хочу, чтобы компонент python на стороне сервера обрабатывал вызовы AJAX и отображал HTML-шаблон с помощью jinja2.
Раньше у меня был успех с python, создавая графические приложения с использованием tkinter/requests. Любите язык, но среда python (среда?) Запутанна. Я не работаю в virtualenv
.
Согласно jinja2 docs, HTML-шаблоны должны быть в пакете. Затем вы создаете Environment
с PackageLoader
, который знает имя пакета и шаблона реж:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
Итак, вот мой index.py (это просто заглушки, и даже не пытаться оказывать ничего, но вы можете хотя бы сказать, если он сработает).
#!/usr/bin/python
from jinja2 import Environment, PackageLoader # no prob, jinja2 correctly installed using pip
env = Environment(loader=PackageLoader('mypkg', 'template')) # causes server error
# if it doesn't crash, just put up a basic html page for now
print ("Content-type: text/html\r\n\r\n")
print("<html><head><title>hello</title></head><body>hello wuld</body></html>")
Вот структура каталога:
index.py
mypkg/
mypkg/template/index.html
mypkg/__init__.py # empty
Соответствующая строка из журнала ошибок:
ImportError: No module named mypkg
Может быть, мне нужно структурировать это по-другому, и я уверен, что мне нужно для создания и вызова setup.py
для установки модуля. Это часть того, что оставил другой ответ: что находится в setup.py
и как он работает в этом случае? Я просмотрел десятки ресурсов на setup.py
, и ни один из них, похоже, не относится к вопросу об установке шаблонов HTML.
Заранее благодарим за вашу помощь!
UPDATE: fragilewindows указал на ресурс, который рассказывает о «режиме разработчика», который, вероятно, является частью ответа. Трудность здесь заключается в том, что я хочу упаковать этот шаблон для локального развертывания, а не для распространения. Но 99% онлайн-документации касается проектов упаковки для PyPi. Мне не нужно упаковывать «проект», просто чертовски HTML-шаблон. В самом деле, единственной причиной, по которой мне нужно упаковать шаблон, является то, что это способ по умолчанию для jinja2
для доступа к шаблонам (и я хочу перейти на native в python).
Мне просто нужно убедить среду, что «mypkg» установлен, и что «шаблон» - это каталог в рамках установки. Вы можете видеть, что мои усилия до сих пор наивны; Я ожидаю, что правильный ответ будет соответственно легким.
Спасибо, то PPUG имеет содержательное представление (режим развития). Но эти другие ресурсы довольно не имеют отношения к моей проблеме. Я разрабатываю это приложение для собственного развертывания, а не для распространения. Первые семь страниц результатов поиска на упаковке python в значительной степени связаны с распространением кода, что не является моей проблемой. Я уточню свой вопрос. –