我的Django项目的工作流程应该是这样的:
由于各种参数的差异,可能生成的图表数量非常大,因此预先生成图表并静态提供图表不是一种选择。
matplot命令show()和savfig()似乎也不适合该任务。
我最好能做到这一点吗?
答案 0 :(得分:1)
大致相同:
import django.http
import matplotlib.pyplot
# This is your view function, hook it up to your URLconf.
def chart(request, *args):
# ...extract chart parameters from request.GET and/or args...
fig = matplotlib.pyplot.figure(...)
# ...draw your chart, invoking methods on fig...
response = django.http.HttpResponse(content_type='image/png')
fig.savefig(response, format='png')
return response
现在我不确定如何使用AJAX向用户显示此内容。我认为仅使用适当的img
属性插入src
元素会更容易。使用jQuery,可能是这样的:
var src = '/chart/?' + $.param({
// This all ends up in request.GET
type: 'something',
foo: 'bar',
myParam: 123
});
$('#displayArea').empty().append($('<img>').attr('src', src));
但如果你确实想要AJAX,你当然可以使用$.ajax
。
如果图表完全由传入的参数定义,并且用户可能希望多次查看同一图表,请考虑设置开放式client caching headers以避免从服务器重新请求相同的图像。这只是一个优化。