2015-10-30 86 views
5

我想在烧瓶生成的网页上放置一个按钮,让用户在用户单击按钮时将html页面下载为文件。我想象的是将呈现的html保存到BytesIO并通过send_file发送,但我找不到如何将呈现的页面保存到文件对象中。我怎样才能做到这一点?下载烧瓶生成的html页面

+0

你的意思是像ctrl-s或右键单击>保存页面为?为什么不让他们这样做呢?这甚至可以照顾图像和其他链接的资源。 – davidism

+0

感谢您的评论!有几个原因;首先,这个网页是针对那些根本不懂技术的人,所以我不指望他们知道这个窍门;第二,我想给他们几乎相同但不完全相同的网页;最后,我并不特别相信浏览器能够很好地保存网页,因为我个人经历了一些失败。顺便说一句,这个网页是关于生成科学数据,因此内容和目标受众与通常的网页有点不同。 –

回答

4

你可以尝试这样的事:

import StringIO 
from flask import Flask, send_file, render_template 

def page_code(): 
    strIO = StringIO.StringIO() 
    strIO.write(render_template('hello.html', name='World')) 
    strIO.seek(0) 
    return send_file(strIO, 
        attachment_filename="testing.txt", 
        as_attachment=True) 

它不是测试,但应该给你一个想法。

+0

非常感谢!我没想到''render_template''要返回一个字符串中的整个html页面,我认为它会做得比场景背后更多,因为API文档没有提及任何关于它的返回值,或者可能我错过了它。这解决了这个问题。 –