テンプレートに表示するために3つの異なるチャートに分解したいデータの束を生成するdjangoビューがあります。グラフを1つずつ生成し、HttpResponse()を返すだけで、適切なデータなどを使用してグラフを作成していることを確認できます。
ReportLabを使用するのはこれが初めてなので、Webアプリで表示するためにこれらを生成する際に正しいアプローチを取っていることを確認したいと思います。これを処理する2つの異なる方法を見ることができます:
実際にチャートのバイナリ表現をテンプレートに渡し、それらをimgタグに割り当てます。(残念ながら、これまでのところ成功していません。バイナリデータをテンプレートにダンプすると、空になります)
- チャートを画像として保存し、テンプレート内の静止画像を参照します。
どのアプローチを取るべきかについてのアドバイスと、可能であれば実装のヒントを探しています。
参考までに、チャートを作成するビューのスニペットを次に示します(これの多くはDjangoProject wikiサンプルから作成されました)。
#instantiate a drawing object
import mycharts
d = mycharts.MyBarChartDrawing(width=800, height=500)
d.chart.categoryAxis.categoryNames = ['Pre-Operative Visit', '6-Week Visit', '3-Month Visit ', '6-Month Visit', '12-Month Visit']
d.chart.data = vas_scores_wrapper
#get a GIF (or PNG, JPG, or whatever)
image_data = d.asString('png')
return HttpResponse(image_data, 'image/gif')
return render_to_response('summaries/study_summary.html', {'patients':patient_list,'query_form':query_form,'image_data':image_data}, context_instance=RequestContext(request))
これは、棒グラフを作成するために機能します。FWIW、「image_data」をテンプレートに渡してそのテンプレートにダンプしても、何も表示されませんでした。おそらく、バイナリデータをテンプレートに直接渡すことはできませんか?