gpt4 book ai didi

python - 如何在 Python (Jinja2) 中单击“导出”按钮下载文件?

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:39 27 4
gpt4 key购买 nike

我有一个按钮导出:

 <button class="aptButton" formaction="/export/" type="submit">export</button>

我在/export/中有这个

索引.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 有一些很好的库。有没有其他库可以用来将结果下载到用户桌面上的制表符分隔文件?

导出.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')

最佳答案

如果您使用良好的老式 CGI 生成制表符分隔的文件,您需要做的就是打印一个适当的标题,然后在 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()

基本部分是打印标题的两行,后跟一个空行来与内容分开,后面是纯文本内容。

如果您希望通过单击导出 按钮来实现这一点,那么你可以,例如:

  • Export 按钮设为指向另一个 URL 端点的链接,该端点将使用我在上面放置的示例脚本
  • 或者,使用相同的脚本,在表单参数上使用条件语句来决定打印首页,或者使用上面的示例脚本打印内容

如果您需要进一步的帮助,请告诉我。

关于python - 如何在 Python (Jinja2) 中单击“导出”按钮下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com