2012-11-08 28 views
6

似乎所有的D3示例圖都將外部.csv或.tsv文件作爲輸入數據。有什麼方法可以修改代碼以從Django中的變量中獲取數據。假設{{數據}}採用JSON格式,您如何在圖表中實現此功能,如http://bl.ocks.org/3885304http://bl.ocks.org/3887051?我試圖避免總是寫一個.csv文件。Django爲D3圖形輸入的直接數據

+1

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

+0

如果我使用的是d3.json,那麼URL和回調是什麼? – ono

+0

我誤解了你的問題,我以爲你想用它作爲json使用http。詳情請參閱我的回答。 – Martin

回答

5

你總是可以創建一個視圖,它將提供D3將要使用的動態CSV文件。這種方式也允許用戶在需要原始數據而不是圖表的情況下下載數據。

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

如果你正在做這個很多考慮一個API像tastypie https://github.com/toastdriven/django-tastypie – PhoebeB

+1

此外,我同意Miki725再csv。在從django提供csv和json到d3之後,我現在堅持使用csv,因爲有一些很好的工具,如d3.nest和crossfilter用於提煉選擇,而csv比json傳輸的要小。 – PhoebeB

5

,而不是加載數據的異步(Ajax風格的),你可以使用格式正確的JSON傳遞給你的模板標籤變量和|safe d的字符串。

退房這是基於http://bl.ocks.org/3885304

您也應該檢查出來,因此相關問題的工作示例http://bl.ocks.org/4040034,有關於這個問題噸。

+0

該圖是我正在尋找的。我的{{數據}}完全是他們的var數據格式,即JSON。我可以簡單地用var data = {{data}}替換他們的數據嗎?它似乎沒有工作。 – ono

+2

修正了它。 {{data | safe}} – ono

+1

關鍵是'| safe'來繞過默認的django轉義字符串。 – hobs