我试图定义一个名为" body"的变量。然后将其传递给Jinja2模板的render语句。如果我在一个单独的行上定义变量然后使用只有变量名的render语句,我会收到一个错误。
示例代码:
from jinja2 import Environment, FileSystemLoader
import os
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
env = Environment(loader=FileSystemLoader(THIS_DIR),
trim_blocks=True)
template = env.get_template('test_template.html')
body = "test"
html_str = template.render(body)
以上代码出错:
ValueError: dictionary update sequence element #0 has length 1; 2 is required
如果我在render语句的括号内定义变量,它就有效。
这有效,但它不是我想做的事情:
from jinja2 import Environment, FileSystemLoader
import os
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
env = Environment(loader=FileSystemLoader(THIS_DIR),
trim_blocks=True)
template = env.get_template('test_template.html')
html_str = template.render(body="test")
答案 0 :(得分:1)
你应该使用
body = {"body":"test"}
html_str = template.render(body)
答案 1 :(得分:0)
您可以使用:
html_str = template(body=body)
等号的body
是变量的名称,因为它将在模板内调用。等号右边的body
是python代码中的变量名称