2017-09-27 34 views
1

我想創建一個簡單的頁面,需要登錄並有一個按鈕,點擊它就可以下載一個csv文件。Django如何將一個按鈕鏈接到http響應

下面的代碼運行良好,但是直接下載文件。

@login_required(login_url='/admin/login/') 
def index(request): 

    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename="data.csv"' 

    writer = csv.writer(response) 
    writer.writerow(['First row', 'Foo', 'Bar', 'Baz']) 
    writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', "Here's a quote"]) 

    return response 

我可以創建一個按鈕和鏈接,以便它的模板,但我如何返回從它上面的響應。

<form action="#" method="get"> 
<input type="submit" value="Click" name="mybtn"> 
</form> 
+1

不確定「直接下載文件」有什麼問題。你想要什麼不同? –

+0

如果鏈接被訪問文件將不會被下載,只有點擊該按鈕纔會下載它。 – garg10may

回答

0

創建返回csv文件的單獨視圖,並設置形式指導其提交到該視圖:

<form action="{% url 'my_csv_view' %} method="get"> 
    <input type="submit" value="Click" name="mybtn"> 
</form> 

在這種情況下,您的CSV文件將被命名視圖送達'my_csv_view',但您可以將其更改爲適合您的更好的東西。

相關問題