2012-11-08 10 views
6

Sembra che tutti i grafici di esempio D3 utilizzino un file .csv o .tsv esterno come dati di input. C'è un modo per modificare il codice per prendere i dati da una variabile in Django. Supponiamo che {{data}} sia in formato JSON, come si attua questo in un grafico come http://bl.ocks.org/3885304 o http://bl.ocks.org/3887051? Sto cercando di evitare sempre di scrivere un file .csv.Immissione diretta di dati da Django per un grafico D3

+1

https://github.com/mbostock/d3/wiki/Requests#wiki-d3_json – Martin

+0

Se sto utilizzando d3.json, qual è l'URL e il callback? – ono

+0

Ho frainteso la tua domanda, pensavo volessi fartela usare come json usando http. Vedi la mia risposta per i dettagli. – Martin

risposta

5

È sempre possibile creare una vista che servirà un file csv dinamico che verrà utilizzato da D3. In questo modo, inoltre, gli utenti potranno scaricare i dati nel caso in cui abbiano bisogno dei dati grezzi anziché di un grafico.

def foo(request, ...): 
    model = get_object_or_404(Foo, ...) 
    data = model.get_data() # should return csv formatted string 
    return HttpResponse(data, content_type='text/csv') 
+1

Se stai facendo questo, considera un api come tastypie https://github.com/toastdriven/django-tastypie – PhoebeB

+1

Inoltre, sono d'accordo con Miki725 re csv. Dopo aver servito sia csv che json a d3 da django, ora mi attengo a csv perché ci sono alcuni buoni strumenti come d3.nest e crossfilter per raffinare le selezioni e csv è più piccolo da trasferire di json. – PhoebeB

5

Invece di caricare i dati in modo asincrono (Ajax-style), è possibile utilizzare correttamente formattato JSON in una stringa passata alla variabile tag modello e |safe d.

Partenza l'esempio di lavoro http://bl.ocks.org/4040034 che si basa su http://bl.ocks.org/3885304

Si dovrebbe anche verificare le domande correlate sulle SO non ci sono tonnellate sull'argomento.

+0

Quel grafico è quello che sto cercando. Il mio {{data}} è esattamente nel formato dei loro dati var, che è JSON. Posso semplicemente sostituire i loro dati con var data = {{data}}? Non sembra funzionare. – ono

+2

risolto. {{data | safe}} – ono

+1

La chiave è '| safe' per evitare l'escape di django predefinito delle stringhe. – hobs

Problemi correlati