2017-09-27 5 views
1

Je veux créer une page simple qui nécessite une connexion et dispose d'un bouton qui, en cliquant, pourrait télécharger un fichier csv.Django comment lier un bouton à la réponse http

Le code ci-dessous fonctionne bien, mais il télécharge directement le fichier.

@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 

je peux créer un bouton et vue lien vers ce modèle est, mais comment puis-je retourner la réponse ci-dessus de celui-ci.

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

Vous ne savez pas quel est le problème avec "téléchargement direct du fichier". Comment est ce que tu veux différent? –

+0

Si le lien est visité le fichier ne sera pas téléchargé, seulement en cliquant sur le bouton le téléchargerait. – garg10may

Répondre

0

Créer une vue séparée qui retourne le fichier csv, et de définir votre formulaire à son directe soumettre à ce point de vue:

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

Dans ce cas, votre fichier csv sera servi par la vue nommée 'my_csv_view', mais vous pouvez changer cela en quelque chose qui vous convient mieux.