2017-07-03 5 views
1

Ich bin in einem Problem stecken, das ich die Excel-Datei in der Antwort einer API senden muss, aber die Daten sind eine riesige Menge. Die Daten kommen aus Abfrage Django Modell und dann bin ich iterieren und auf einen variablen Spar wie:JSON in Excel schreiben und als Antwort senden API

data=[ 
    { 
    'title': 'xxxx', 
    'website': 'xxxx', 
    'state': 'CA ', 
    'second_followup': None, 
    'fourth_followup': datetime.datetime(2017-5-3-0-0-tzinfo=<UTC>), 
    'first_followup': None, 
    'first_reponse': '', 
    'type': 'a', 
    'email_status': 'xxx', 
    'team_size': 0, 
    'second_reponse': '', 
    'bed_count': 0, 
    'created_at': datetime.datetime(2016-8-30-0-0-tzinfo=<UTC>), 
    'aum': 0, 
    'bounce': None, 
    'lead_status': 'xxxx', 
    'founded_year': '0000', 
    'third_followup': None, 
    'last_name': 'xxxx', 
    'address': 'xxxx', 
    'email': 'xxxx', 
    'created_by': 'xxxx', 
    'specialties': 'xx', 
    'response_date': None, 
    'first_name': 'xxxx ', 
    'zip': 'xxxx', 
    'company_source': 'xxxx', 
    'revenue': 5.0, 
    'company_name': 'xxxx', 
    'fax_number': '0', 
    'inital_contact': datetime.datetime(2017-5-3-0-0-tzinfo=<UTC>), 
    'contact_number': '0', 
    'domain1': 'xxx', 
    'city': '0', 
    'country': 'USA', 
    'industry': 'xxx', 
    'department': 'a', 
    'domain2': 'xxx', 
    'contact_source': 'xxx', 
    'fifth_followup': None 
    }, 
    { 
    'title': 'xxxx', 
    'website': 'xxxx', 
    'state': 'CA ', 
    'second_followup': None, 
    'fourth_followup': datetime.datetime(2017-5-3-0-0-tzinfo=<UTC>), 
    'first_followup': None, 
    'first_reponse': '', 
    'type': 'a', 
    'email_status': 'xxx', 
    'team_size': 0, 
    'second_reponse': '', 
    'bed_count': 0, 
    'created_at': datetime.datetime(2016-8-30-0-0-tzinfo=<UTC>), 
    'aum': 0, 
    'bounce': None, 
    'lead_status': 'xxxx', 
    'founded_year': '0000', 
    'third_followup': None, 
    'last_name': 'xxxx', 
    'address': 'xxxx', 
    'email': 'xxxx', 
    'created_by': 'xxxx', 
    'specialties': 'xx', 
    'response_date': None, 
    'first_name': 'xxxx ', 
    'zip': 'xxxx', 
    'company_source': 'xxxx', 
    'revenue': 5.0, 
    'company_name': 'xxxx', 
    'fax_number': '0', 
    'inital_contact': datetime.datetime(2017-5-3-0-0-tzinfo=<UTC>), 
    'contact_number': '0', 
    'domain1': 'xxx', 
    'city': '0', 
    'country': 'USA', 
    'industry': 'xxx', 
    'department': 'a', 
    'domain2': 'xxx', 
    'contact_source': 'xxx', 
    'fifth_followup': None 
    },... and so on 
] 

In oben ich mehr als 10000 Daten haben, so wie ich diese Daten in Excel-Datei schreiben und gesendet Diese Datei wird an die API-Antwort gesendet, damit der Benutzer die Datei herunterladen kann. Datei wird nicht auf dem Server speichern Dies ist eine weitere Anforderung

JSON ist nicht in irgendeiner Datei gespeichert es erstellt wird, während die Reaktion des Django Modellabfrage Iterieren

Antwort

0

Senden Sie die Variable auf der Client-Seite, erstellen Sie eine temporäre JSON Datei und verwenden Sie Javascript mit Json2Flat, um es in .csv zu konvertieren.

Diese Bibliothek konvertiert JSON-Dokumente in CSV. Es verwendet Google-Gson und JsonPath für die Konvertierung. Sie können die JSON-Datei später löschen oder als Alternative zum Client senden.

+0

Momentan machen wir das selbe, indem wir diese Variable auf die Client-Seite senden und die Seitennummerierung verwenden, aber es dauert sehr lange, diese Daten in Datei zu rendern und nach langer Zeit wird sie heruntergeladen. Also ich denke, ich muss mit Backend umgehen –

+0

Sie können nicht mit dem Download als solcher helfen, da es auf Netzwerk infra abhängt. Sehen Sie, Sie haben zwei Möglichkeiten - entweder erstellen Sie die Datei auf dem Server und stellen Sie sie zum Download zur Verfügung, vielleicht löschen Sie die Datei nach einer Weile oder senden Sie die Daten in einer serialisierten Weise und erstellen Sie die CSV mit Client-Computing-Ressourcen. Kannst du anders denken? –

+0

Danke, ich werde die erste Option versuchen, um eine Datei auf dem Server zu erstellen, weil wir derzeit das gleiche tun, um Daten von der Serverruhe zu senden, die von der Klientenseite gehandhabt wird. Eine weitere Sache ist entweder auf Server- oder auf Client-Seite möglich: Wenn ich alle Daten gleichzeitig ohne Seitenumbruch sende, wird der Timeout-Fehler nicht angezeigt. –

Verwandte Themen