如何在 Python (Jinja2) 单击导出按钮下载文件?
How to download a file in Python (Jinja2) on-click Export button?
我有一个导出按钮 :
<button class="aptButton" formaction="/export/" type="submit">export</button>
我在 /export/ 中有这个
index.cgi
#! /apollo/sbin/envroot $ENVROOT/bin/python
# -*- coding: utf-8 -*-
import cgitb
cgitb.enable()
import cgi
def main():
print "Content-Type: text/html"
print
form = cgi.FieldStorage()
results = helpers.getResults()
environment = helpers.get_environment()
print environment.get_template('export.html').render(
results = results)
main()
我的 export.html
里有这个
<!doctype html>
{% for id in results %}
{{ write_results_to_file(id) }}
{% endfor %}
我正在尝试将结果下载到制表符分隔的文件中,所以我想写入本地文件然后发送(下载)该文件,但我不确定如何进行下载部分,我无法使用flask 或 django 有一些很好的库。有没有其他库可以用来将结果下载到用户桌面上的制表符分隔文件?
export.py
def write_results_to_file(result):
local_filename = "/home/testing.txt"
# NOTE the stream=True parameter
with open(local_filename, 'w') as f:
f.write('\t'.join(result) + '\n')
如果您使用良好的 old-fashioned CGI 生成 tab-separated 文件,
您需要做的就是打印一个适当的 header 然后在 stdout
上打印内容,像这样:
def main():
form = cgi.FieldStorage()
results = helpers.getResults()
print "Content-Type: text/plain"
print "Content-Disposition: attachment; filename=testing.txt"
print
for result in results:
print '\t'.join(result) + '\n'
main()
基本部分是 print
header 的两行,
后跟一个空行来与内容分开,
后面是纯文本内容。
如果您想通过单击 导出 按钮实现此目的,
那么你可以,例如:
- 将 Export 按钮作为 link 到另一个 URL 将使用我在上面放置的示例脚本的端点
- 或者,使用相同的脚本,在表单参数上使用条件语句来决定打印首页,或者使用上面的示例脚本打印内容
如果您需要进一步的帮助,请告诉我。
我有一个导出按钮 :
<button class="aptButton" formaction="/export/" type="submit">export</button>
我在 /export/ 中有这个
index.cgi
#! /apollo/sbin/envroot $ENVROOT/bin/python
# -*- coding: utf-8 -*-
import cgitb
cgitb.enable()
import cgi
def main():
print "Content-Type: text/html"
print
form = cgi.FieldStorage()
results = helpers.getResults()
environment = helpers.get_environment()
print environment.get_template('export.html').render(
results = results)
main()
我的 export.html
里有这个<!doctype html>
{% for id in results %}
{{ write_results_to_file(id) }}
{% endfor %}
我正在尝试将结果下载到制表符分隔的文件中,所以我想写入本地文件然后发送(下载)该文件,但我不确定如何进行下载部分,我无法使用flask 或 django 有一些很好的库。有没有其他库可以用来将结果下载到用户桌面上的制表符分隔文件?
export.py
def write_results_to_file(result):
local_filename = "/home/testing.txt"
# NOTE the stream=True parameter
with open(local_filename, 'w') as f:
f.write('\t'.join(result) + '\n')
如果您使用良好的 old-fashioned CGI 生成 tab-separated 文件,
您需要做的就是打印一个适当的 header 然后在 stdout
上打印内容,像这样:
def main():
form = cgi.FieldStorage()
results = helpers.getResults()
print "Content-Type: text/plain"
print "Content-Disposition: attachment; filename=testing.txt"
print
for result in results:
print '\t'.join(result) + '\n'
main()
基本部分是 print
header 的两行,
后跟一个空行来与内容分开,
后面是纯文本内容。
如果您想通过单击 导出 按钮实现此目的, 那么你可以,例如:
- 将 Export 按钮作为 link 到另一个 URL 将使用我在上面放置的示例脚本的端点
- 或者,使用相同的脚本,在表单参数上使用条件语句来决定打印首页,或者使用上面的示例脚本打印内容
如果您需要进一步的帮助,请告诉我。