在python中从HTML模板生成HTML?

时间:2017-11-04 23:15:54

标签: python html python-3.x jinja2 template-engine

我想用JSPJade之类的标签设计自己的HTML模板,然后将数据从python传递给它,让它生成完整的html页面。

我不想像在DOM那样在python端构建文档。只有数据进入页面和页面tempalte决定数据如何布局。

我不希望使用HTTP提供结果页面,只生成HTML文件。

有可能吗?

更新

我找到了Jinja2,但我有奇怪的boilerplate requirements。例如,他们希望我用

创建环境
C:\Users\{your-username}\AppData\Local\Android\sdk\tools\bin\sdkmanager --licenses

虽然说找不到包env = Environment( loader=PackageLoader('yourapplication', 'templates'), autoescape=select_autoescape(['html', 'xml']) ) 。如果我删除yourapplication参数,则会在线投诉

loader

template = env.get_template('mytemplate.html')

我可以直接从磁盘读取模板并使用变量填充它,而无需额外的东西吗?

1 个答案:

答案 0 :(得分:2)

只需使用SELECT C.CUSTOMER_ID, O.ORDER_ID, OI.PRODUCT_ID, PI.PRODUCT_NAME FROM DEMO_CUSTOMERS C inner join DEMO_ORDERS O on C.ID = O.CUSTOMER_ID inner join DEMO_ORDER_ITEMS OI on O.ID = OI.ORDER_ID inner join DEMO_PRODUCT_INFO PI on OI.PRODUCT_ID = PI.ID WHERE C.NAME IN ('Willam Hartsfield')

即可
FileSystemLoader

import os import glob from jinja2 import Environment, FileSystemLoader # Create the jinja2 environment. current_directory = os.path.dirname(os.path.abspath(__file__)) env = Environment(loader=FileSystemLoader(current_directory)) # Find all files with the j2 extension in the current directory templates = glob.glob('*.j2') def render_template(filename): return env.get_template(filename).render( foo='Hello', bar='World' ) for f in templates: rendered_string = render_template(f) print(rendered_string)

example.j2