pom*_*mbo 8 html python templates jinja2
我正在尝试使用Jinja2在python中创建一个html模板.我有一个模板文件夹和我的'template.html',但我不知道如何处理环境或包加载器.
我使用easy_python安装了Jinja2并运行了以下脚本.
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
template = env.get_template('mytemplate.html')
print template.render()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误,因为我不知道如何定义包/模块.请帮帮我,我只是想创建一个简单的模板.
File "log_manipulationLL.py", line 291, in <module>
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
File "/usr/local/lib/python2.7/dist-packages/Jinja2-2.6-py2.7.egg/jinja2/loaders.py", line 216, in __init__
provider = get_provider(package_name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 213, in get_provider
__import__(moduleOrReq)
ImportError: No module named yourapplication
Run Code Online (Sandbox Code Playgroud)
如果您不想要或不需要Python包,您可能应该使用FileSystemLoader,如下所示:
from jinja2 import Environment, FileSystemLoader, select_autoescape
env = Environment(
loader=FileSystemLoader('file/path/'),
autoescape=select_autoescape(['html', 'xml']),
)
Run Code Online (Sandbox Code Playgroud)
PackageLoader期望使用常规点语法的实际Python模块.例如,如果您的结构如下所示:
myapp/
__init__.py
…
templates/
mytemplate.html
Run Code Online (Sandbox Code Playgroud)
您应该使用myapp模块名称.
我使用以下代码解决了这个问题:
env = Environment(loader=PackageLoader('scriptname',
templatesPath))
Run Code Online (Sandbox Code Playgroud)
此代码进入文件的位置scriptname.py.
我不确定我的答案是否相关,但我想知道也许有人可能会觉得这个答案很有用.如果我错了,请告诉我.