我想用JSP
或Jade
之类的标签设计自己的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')
我可以直接从磁盘读取模板并使用变量填充它,而无需额外的东西吗?
答案 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