生成PDF时刻录加载屏幕

时间:2017-05-24 23:16:53

标签: python flask

我正在试图找出一种可以为用户提供加载屏幕的方法。 当用户单击按钮(不提交)时,它将与服务器通信并生成PDF。此过程大约需要3.2秒,我希望在此期间提供加载屏幕。我面临的问题是,许多可用的加载屏幕解决方案需要重新加载页面(在这种情况下为'post')以关闭加载gif,这给我带来了麻烦。 下面是我下载PDF查看功能。 我正在寻找一种解决方案,在点击PDF下载按钮时将提供加载屏幕,加载屏幕将在下载PDF文件之前消失。

@post_user_blueprint.route('/download_pdf/<string:test_id>/<string:created_on>/<string:test_type>', methods=['GET', 'POST'])
@login_required
@human_readable_log('Downloaded a PDF')
def download(test_id, created_on, test_type):
    from app.views.utility import PDFSystem

    pdf_system = PDFSystem(test_id=test_id, created_on=created_on, test_type=test_type)
    pdf = pdf_system.create_pdf('dynamic_pdf_template.html')
    _filename = test_type +'_'+ test_id
    response = make_response(pdf)
    response.headers['Content-Type'] = 'application/pdf'
    response.headers['Content-Disposition'] = 'attachment; filename=' + _filename

    return response

2 个答案:

答案 0 :(得分:1)

不是在点击按钮后在不同的URL上路由用户,而是使用JavaScript AJAX调用下载路径并显示一些加载器,直到您的AJAX没有返回有用的内容,无论您从{{1返回它路线。

答案 1 :(得分:0)

Flask是一个服务器端框架。它可以使用请求与您的客户进行通信。您需要的是一种以异步方式与服务器通信的方式(使用AJAX)。您将向服务器发送请求PDF的请求,并在等待响应时显示加载页面或符号。您可以在客户端代码

上使用JQuery(或类似的东西)来完成此操作