我正在使用 WeasyPrint 创建 PDF。PDF 可以轻松达到 120 多页,并且最多需要 2 分钟才能呈现。发生这种情况时,页面看起来冻结并且没有响应。我正在研究 Celery,但在我到达那里之前,我想实现一个进度条:
完美解决方案: 以某种方式获取 PDF 导出的当前状态并将其显示在进度条中
可接受的解决方案:显示一个移动的进度条,告诉用户可能需要两分钟,直到 PDF 显示在浏览器显示中/自行下载。
有任何想法吗?谢谢!
当前views.py:
def course_view(request):
students = Student.objects.filter(student_courseid__course_accid = request.user.userprofile.course_accid)
html_template = get_template('student/student_pdf_all.html')
rendered_html = html_template.render({'student': students}, request)
pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri()).write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/pdf.css')])
http_response = HttpResponse(pdf_file, content_type='application/pdf')
filename = str(request.user.userprofile.course_accid) + ".pdf"
http_response['Content-Disposition'] = 'filename="{}"'.format(filename)
return http_response