我对python缺乏经验,所以当我在pocoo.org上阅读jinja API文档时,我误入歧途.它写道:
配置Jinja2为应用程序加载模板的最简单方法大致如下:
from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有默认设置的模板环境和一个在yourapplication python包中的templates文件夹中查找模板的加载器.
事实证明,这并不是那么简单,因为你必须在其中创建/安装包含模板的python包,这会带来许多不必要的复杂性,特别是如果你无意分发你的代码.您可以在此处和此处参考有关此主题的SO问题,但答案含糊不清且不满意.
显然,天真的新手想要做的只是直接从文件系统加载模板,而不是作为包中的资源. 这是怎么做到的?
我正在尝试使用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) 我有一个使用Jinja2模板的python脚本,我正在尝试使用Pyinstaller创建一个文件夹分发.
在Jinja,我让程序通过使用PackageLoader类来理解模板的位置.下面的代码显示它指向Python包templates下的我的文件夹pycorr.
env = Environment(loader=PackageLoader('pycorr', 'templates'))
template = env.get_template('child_template.html')
Run Code Online (Sandbox Code Playgroud)
这是我的文件夹结构:
pycorr
| |
| + templates
| |
| + base.html
| + child.html
Run Code Online (Sandbox Code Playgroud)
当我使用Pyinstaller将包编译成单个文件夹时,我没有看到任何与Jinja2相关的警告/错误,我可以启动.exe文件.但是,当程序开始查找Jinja2模板时,它会失败,并在控制台窗口中显示此错误消息:
Traceback (most recent call last):
...
File "C:\Users\ ... \out00-PYZ.pyz\pycorr.WriterToHTML", line 96, in htmlout_table
File "C:\Users\ ... \out00-PYZ.pyz\pycorr.WriterToHTML", line 13, in __init__
File "C:\Users\ ... \out00-PYZ.pyz\pycorr.WriterToHTML", line 48, in __set_template
File "C:\Users\ ... \out00-PYZ.pyz\jinja2.environment", line 791, in get_template
File "C:\Users\ ... \out00-PYZ.pyz\jinja2.environment", line 765, in _load_template
File "C:\Users\ ... …Run Code Online (Sandbox Code Playgroud)