2011-08-07 9 views
0

グラフとしてHttpResponseからデータを表示する必要があります(xaxis = datetime、yaxisは集計統計関数です)。データをCSVファイルにエクスポートできました。amazonとdjangoを統合するにはどうすればよいですか?amcharts djangoとの統合

def monitor(request): 
    if request.method == 'POST' : 
    forms = ServicesForm(request.POST) 
    if forms.is_valid(): 
     service = forms.cleaned_data['service'] 
     scale = forms.cleaned_data['scale'] 
     datatype = forms.cleaned_data['datatype'] 
     starttime = forms.cleaned_data['starttime'] 
     endtime = forms.cleaned_data['endtime'] 

     db_table = u'servicestats' 
     name = Servicenames.objects.get(servicename=service) 

     servicestats = Servicestats.objects.raw('SELECT distinct dtime,scale,' + datatype + ' FROM ' + db_table + ' WHERE scale = ' + str(scale) + ' AND dtime BETWEEN "' + str(starttime) + '" AND "' + str(endtime) + '" AND service_id = ' + str(name.id)) 
     response = HttpResponse(mimetype='text/csv') 
     response['Content-Disposition'] = 'attachment;filename="export.csv"'   
     writer = csv.writer(response) 
     for s in servicestats: 
      if datatype =='cnt': 
       writer.writerow([s.dtime,s.cnt]) 
      if datatype =='avg' : 
       writer.writerow([s.dtime,s.avg]) 
      if datatype =='min' : 
       writer.writerow([s.dtime,s.min]) 
      if datatype =='max' : 
       writer.writerow([s.dtime,s.max]) 
      if datatype =='threenines' : 
       writer.writerow([s.dtime,s.threenines]) 
     return response 

else: 
    forms = ServicesForm 


return render_to_response('monitor/monitor.html', {'forms':forms}, 
    context_instance = RequestContext(request)) 

template,html : 
<form action='/monitor/' method="post"> {%csrf_token%} 
    {{ forms.as_p}} 
    <input type = "submit" value = "Submit">  
</form> 
+0

ご質問がわかりません。あなたのモニタービューは、フォームへのポストがcsvファイルを返す静かなインターフェースのように動作するように見えますか?あなたのamchartのものはどこですか? –

+0

これは私の質問です。私はクエリをテストするためにcsvファイルを返しました。私はamchartグラフを返す必要があります。 – dave

答えて

1

すでに、Djangoの部分が機能しています。これをクライアント側のamcharts javascript rendererに渡す必要があります。これを行う方法は、blog articleを参照してください。上記のビューにポストに着く

window.onload = function() { 
     loadCSV("data.txt"); 
    } 

からloadCSVを変更します:あなたは、あなたのURLでdata.txtを交換する必要があり

function loadCSV(file) { 
     if (window.XMLHttpRequest) { 
      // IE7+, Firefox, Chrome, Opera, Safari 
      var request = new XMLHttpRequest(); 
     } 
     else { 
      // code for IE6, IE5 
      var request = new ActiveXObject('Microsoft.XMLHTTP'); 
     } 
     // load 
     request.open('GET', file, false); 
     request.send(); 
     parseCSV(request.responseText); 
    } 

簡単にGoogleは、変更する方法についてthis page提供そのリクエスト。代わりに投稿を使用するようにします。

+0

amchartを私のdjangoプロジェクトにダウンロードして解凍する必要がありますか? – dave

+0

はい。あなたはそのjavascriptを読み込む必要があります。彼らが世界的に利用可能なダウンロードリンクを持っているかどうかは確かではありませんが、私はいつも自分自身をホストしています。 –

+0

「私はいつも自分のものを主催しています」とはどういう意味ですか? – dave

0

このblog articleをベースに使用すると、データをjavascriptファイルで生成された配列に置き換えます。新しいテンプレートでこれを本質的に行います:

var dataprovider = [ 
{% for s in servicestats %} 
     {date:s.dtime, value1:s.cnt, value2:s.min **more values here**}{% if not forloop.last %},{% endif %} 
{% endfor %} 

];

サービステンプレートをそのテンプレートに渡します。

+0

javascriptテンプレートのビューでservicestatsを渡すにはどうすればよいですか? – dave

+0

つまり、djangoビューのservresestatsデータを含むHTTPresponseredirectをhtml javascriptテンプレートに送信する必要がありますか?このパスをビューにどのように記述しますか? – dave

+0

ところで、すでにビューで取得されたdtimeやその他のデータ値を渡す方が良いでしょう。クエリーセットのservicestatsではなく、私の見解に書かなければいけません。ありがとう。 – dave

関連する問題