使用 Chameleon ZPT 模板写出打印语句
我正在使用金字塔,我知道这可能不是首选的做事方式,但它真的很酷。我有一堆可以打印到标准输出的 Python 脚本。现在我想将这些脚本作为 Pyramid 中请求/响应的一部分运行。我的意思是我想捕获脚本的标准输出并将其写入模板。
捕获标准输出部分非常简单:
import sys
sys.stdout = tbd
据我所知,render_to_response 不支持以下任何内容:
return render_to_response(’templates/foo.pt’,
{’foo’:1, ’bar’:2},
request=request)
知道如何在模板上进行 write() 操作吗?
I am using Pyramid and I know that this is probably not the preferred way to do things but it would be really cool. I have a bunch of Python scripts which print to stdout. Now I want to run these scripts as part of a request/ response in Pyramid. I mean I want to capture the stdout of the scripts and write it to the template.
The capturing stdout part is pretty easy:
import sys
sys.stdout = tbd
As far as I can see render_to_response does not support any of this:
return render_to_response(’templates/foo.pt’,
{’foo’:1, ’bar’:2},
request=request)
Any idea how I can get a write() operation on the template?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我可能会使用 subprocess 模块来捕获脚本的标准输出,而不是导入它并直接运行它:
I might use the subprocess module to capture the stdout of the script instead of importing it and running it directly:
您可以将 StringIO.StringIO 对象传递给 stdout,然后通过上下文字典将其传递给模板,然后在模板中的适当时间调用 StringIO.StringIO.getvalue():
然后在模板中:
您可能会需要添加一个过滤器以确保文本格式正确,或者您可能只是使用
__html__
方法创建 StringIO.StringIO 的子类,该方法将按照您认为合适的方式呈现内容。You could pass a StringIO.StringIO object to stdout, then also pass it to the template via the context dictionary and just call StringIO.StringIO.getvalue() at the proper times in the template:
and then in the template:
You'll probably need to add a filter to make sure the text is formatted properly, or you might just create a subclass of StringIO.StringIO with an
__html__
method that would render things as you see fit.