我有一个 django 视图生成一堆数据,我想将这些数据分解为三个不同的图表以显示在模板中。我可以一一生成图表并执行简单的 return HttpResponse() 以确定我正在使用正确的数据等创建它们。
由于这是我第一次使用 ReportLab,我想确保我采用正确的方法来生成这些以在 Web 应用程序中进行演示。我可以看到两种不同的方法来处理这个问题:
实际上将图表的二进制表示传递给模板并将它们分配给 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”传递给模板并将其转储到该模板上并没有显示任何内容。也许您不能将二进制数据直接传递给模板?