2017-09-27 59 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',但您可以将其更改为适合您的更好的东西。

相关问题