我正在使用Jinja2和python 3.3.1,我的模板代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>{{ title }}</title>
<meta name="description" content="{{ description }}" />
</head>
<body>
<div id="content">
<p>Why, hello there!</p>
</div>
</body>
</html>
和我的python.cgi文件如下:
from jinja2 import Template
print("Content-type: text/html\n\n")
templateLoader = jinja2.FileSystemLoader( searchpath="\\")
templateEnv = jinja2.Environment( loader=templateLoader )
TEMPLATE_FILE = "cgi-bin/example1.jinja"
template = templateEnv.get_template( TEMPLATE_FILE )
templateVars = { "title" : "Test Example",
"description" : "A simple inquiry of function." }
outputText = template.render( templateVars )
所有我得到的是一个没有html的空白页面,cgi-header工作意味着浏览器正在识别它的html但是&#39;为什么,你好那里&#39;没有显示。 jinja2也在工作,因为在翻译模式下我创建了一个简单的模板,如:
t = Template("hello! {{title}}")
t.render(title="myname")
它显示你好! MYNAME
error_log也没有错。怎么回事?
答案 0 :(得分:1)
Python解释器会自动回显任何表达式的结果,只要它不返回None
。
在CGI脚本中,您需要明确地写出结果:
outputText = template.render( templateVars )
print(outputText)
template.render()
只生成字符串结果,它不会为你写入stdout。