Erstellen Sie eine CSV-Datei und laden Sie sie aus einer Flask-Ansicht herunter

Theosot

Ich versuche dem Benutzer zu erlauben, eine CSV-Datei mit Daten herunterzuladen, die durch ihre Aktionen definiert sind. Die Datei existiert nicht, sie wird dynamisch erstellt. Wie kann ich das in Flask machen?

Davidismus

Generieren Sie die Daten mit csv.writerund streamen Sie die Antwort . Verwenden Sie StringIO , um in einen speicherinternen Puffer zu schreiben, anstatt eine Zwischendatei zu generieren.

import csv
from datetime import datetime
from io import StringIO
from flask import Flask
from werkzeug.wrappers import Response

app = Flask(__name__)

# example data, this could come from wherever you are storing logs
log = [
    ('login', datetime(2015, 1, 10, 5, 30)),
    ('deposit', datetime(2015, 1, 10, 5, 35)),
    ('order', datetime(2015, 1, 10, 5, 50)),
    ('withdraw', datetime(2015, 1, 10, 6, 10)),
    ('logout', datetime(2015, 1, 10, 6, 15))
]

@app.route('/')
def download_log():
    def generate():
        data = StringIO()
        w = csv.writer(data)

        # write header
        w.writerow(('action', 'timestamp'))
        yield data.getvalue()
        data.seek(0)
        data.truncate(0)

        # write each log item
        for item in log:
            w.writerow((
                item[0],
                item[1].isoformat()  # format datetime as string
            ))
            yield data.getvalue()
            data.seek(0)
            data.truncate(0)

    # stream the response as the data is generated
    response = Response(generate(), mimetype='text/csv')
    # add a filename
    response.headers.set("Content-Disposition", "attachment", filename="log.csv")
    return response

Wenn die generateFunktion Informationen aus der aktuellen Funktion benötigt request, sollte sie mit dekoriert werden stream_with_context. Andernfalls wird der Fehler "Arbeiten außerhalb des Anforderungskontexts" angezeigt. Alles andere bleibt gleich.

from flask import stream_with context

@stream_with_context
def generate():
    ...

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Erstellen Sie eine Datei aus einer Zeichenfolge und laden Sie sie herunter

Erstellen Sie eine einfache Datei und laden Sie sie herunter

Erstellen Sie Verzeichnisse und laden Sie Dateien herunter, indem Sie Eingaben aus einer Datei lesen

Erstellen Sie eine Json-Datei aus dem Website-Inhalt und laden Sie sie herunter

Erstellen Sie eine GPX-Datei aus Punkten und laden Sie sie mit Javascript herunter

Erstellen Sie eine CSV-Datei und laden Sie sie in einem Java-Servlet herunter

So laden Sie eine Datei aus einer E-Mail herunter und speichern sie in C:\

Erstellen einer Chrome-Erweiterung Laden Sie eine Datei herunter

Erstellen Sie eine Zip-Datei aus Büroklammer-Anhängen und laden Sie sie herunter

Laden Sie eine große komprimierte CSV-Datei über https herunter, entpacken Sie sie und laden Sie sie

So erstellen Sie eine Datei mit Inhalten und laden sie mit THYMELEAF herunter

Laden Sie die Datei aus einem Ordner in der Ansicht herunter, der bereits eine Tabelle enthält

wget - Speichern Sie den Download in einer Datei und laden Sie den Fortschritt in eine andere herunter

So laden Sie eine Datei von Blob herunter und senden sie mit einer Dateiantwort

Laden Sie die gz-Datei herunter, indem Sie auf eine URL klicken, und konvertieren Sie sie mit scala in csv

So laden Sie eine Datei in meiner App aus einer Cloud mit einer Inhalts-URI herunter

Angular 2- Generieren Sie eine CSV-Datei und laden Sie sie als Zip-Datei herunter

Laden Sie eine Liste von URLs aus einer CSV-Datei und analysieren Sie sie nacheinander für dieselben Daten

Laden Sie die Datei aus einer DLL in C ++ herunter

Laden Sie eine Datei aus einem übergeordneten Verzeichnis herunter

Laden Sie eine Datei herunter und laden Sie eine Seite neu, sobald die Datei heruntergeladen wurde

Laden Sie eine Datei mit einer dynamischen URL herunter

So laden Sie eine CSV-Datei mit PhantomJS herunter

Laden Sie eine CSV-Datei von Harvard Dataverse herunter

Laden Sie eine Datei mit Watir Webdriver und Phantomjs herunter

So laden Sie eine Datei mit T-SQL aus einer varbinären Spalte herunter

So laden Sie eine Datei aus einer bestimmten Zeile in GridView herunter

So laden Sie eine Datei aus Bytes mithilfe von Web-API und Angular herunter

Laden Sie eine CSV-Datei mit einer HTTP-Get-Anforderung herunter?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv