[英]How do I download xlsx file with Django?
我試圖制作一個使用 Django 下載.xlsx
文件的按鈕,所以我遵循了本教程: https : //xlsxwriter.readthedocs.io/example_django_simple.html
現在我有一個 HTTP 響應,但沒有顯示下載提示。
這是我的代碼的一些部分:
視圖.py:
def xlsx(request):
if request.method == "POST":
output = io.BytesIO()
workbook = xlsxwriter.Workbook(output)
worksheet = workbook.add_worksheet("hello")
worksheet.write(0,0, 'Client')
workbook.close()
output.seek(0)
filename = 'EdedocBilling.xlsx'
response = HttpResponse(output, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
return response
索引.html
<form>...</form>
<button type = "button" id = "saveID"
onclick = "$.ajax({
type: 'POST',
url: 'xlsx',
async: false,
data: $('form').serialize(),
success : console.log(' Success')
})">
Generate
</button>
我刪除了處理數據的代碼,因為生成的.xlsx
工作正常。 (我測試了在服務器上創建文件並成功。)
以下是 HTTP 響應標頭:
HTTP/1.1 200 OK
Date: Thu, 08 Jul 2021 14:47:37 GMT
Server: WSGIServer/0.2 CPython/3.8.8
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename="EdedocBilling.xlsx"
X-Frame-Options: DENY
Content-Length: 5252
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
有人有解決方案嗎? 謝謝!
這是由於 AJAX 的性質以及瀏覽器如何處理所有這些。
查看問題的不同答案是否可以使用 HTTP POST 下載文件? .
在 POST 請求的響應中返回一個 URL,並實現一個傳遞文件內容的 URL 模式。
這當然需要更多的努力,但如果您的網站必須擴展,這將是一個很好的解決方案。
腳步:
get_absolute_url()
。在生產設置中,您還可以配置您的反向代理(例如 nginx)來交付文件,並且您的 Django 視圖僅設置一個標頭(X-Accel-Redirect),指示代理要交付哪個文件。 有關更多信息,請參閱https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.