2012-11-08 8 views
6

Wygląda na to, że wszystkie wykresy przykładowe D3 pobierają zewnętrzny plik .csv lub .tsv jako dane wejściowe. Czy istnieje sposób modyfikowania kodu w celu pobrania danych ze zmiennej w Django. Załóżmy, że {{data}} jest w formacie JSON, jak to zaimplementować na wykresie, takim jak http://bl.ocks.org/3885304 lub http://bl.ocks.org/3887051? Próbuję uniknąć zawsze zapisywania pliku .csv.Bezpośrednie wprowadzanie danych z Django dla wykresu D3

+1

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

+0

Jeśli używam d3.json, co jest adres URL i zwrotna? – ono

+0

Źle zrozumiałem twoje pytanie, myślałem, że chcesz służyć jako json przy użyciu http. Zobacz moją odpowiedź dla szczegółów. – Martin

Odpowiedz

5

Zawsze można utworzyć widok, który będzie wyświetlał dynamiczny plik CSV, który zostanie wykorzystany przez D3. W ten sposób użytkownicy będą mogli pobierać dane na wypadek, gdyby potrzebowali nieprzetworzonych danych zamiast wykresu.

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

Jeśli robisz to dużo, pomyśl o api jak tastypie https://github.com/toastdriven/django-tastypie – PhoebeB

+1

Również zgadzam się z Miki725 re csv. Po dostarczeniu zarówno csv jak i json do d3 z django, teraz trzymam csv, ponieważ jest kilka dobrych narzędzi, takich jak d3.nest i filtr crossowy do korygowania selekcji, a csv jest mniejszy do przeniesienia niż json. – PhoebeB

5

Zamiast ładowania danych asynchronicznie (ajax-style), można użyć prawidłowo sformatowany JSON w ciąg przekazany do szablonu tag zmiennej i |safe d.

Zapoznaj się z pracy przykład http://bl.ocks.org/4040034 który jest oparty na http://bl.ocks.org/3885304

Należy również zapoznać się z powiązanych pytania na SO, istnieje mnóstwo na ten temat.

+0

Ten wykres jest tym, czego szukam. Moje {{dane}} są dokładnie w formacie ich danych var, którymi jest JSON. Czy mogę po prostu zamienić ich dane na var data = {{data}}? To nie działa. – ono

+2

Naprawiono. {{data | safe}} – ono

+1

Kluczem jest '| safe', aby ominąć domyślne django, uciekające z łańcuchów. – hobs

Powiązane problemy