django:服务动态(reportlab)png到模板 [英] django: serve dynamic (reportlab) png to template
问题描述
我已经在这个问题上度过了一天,没有成功,所以帮助将不胜感激。
我使用reportlab生成图形,并将其成功呈现给浏览器此教程:
d = MyBarChartDrawing()
#提取感兴趣的请求参数。
#我建议对所有内容都有默认值。
如果请求中的height:
d.height = int(request ['height'])
如果请求中的width:
d.width = int ['width'])
如果请求中的'数字'
strNumbers = request ['numbers']
numbers = map(int,strNumbers.split(',' ))
d.chart.data = [numbers] #bar图表列出数据列表
如果请求中的title:
d.title。 text = request ['title']
#get一个GIF(或PNG,JPG或其他)
binaryStuff = d.asString('png')
return HttpResponse(binaryStuff,'image / png')
我的问题是我想在一个模板中渲染这个png,如此(不起作用):
return render(request, subscription / monitorSizes.html,{'form':form,'message':'','graph':binaryStuff })
我在这个问题上一直在黑客攻击年龄。这无疑是一个新手的问题!为了拯救我的理智,将会对此感到欣慰。非常感谢:)
编辑:我发现另一个 stackoverflow Q 在同一个问题上,但并没有真正解决。
在views.py
def show_image(request):
d = MyBarChartDrawing()
#extract请求感兴趣的参数。
#我建议对所有内容都有默认值。
如果请求中的height:
d.height = int(request ['height'])
如果请求中的width:
d.width = int ['width'])
如果请求中的'数字'
strNumbers = request ['numbers']
numbers = map(int,strNumbers.split(',' ))
d.chart.data = [numbers] #bar图表列出数据列表
如果请求中的title:
d.title。 text = request ['title']
#get一个GIF(或PNG,JPG或其他)
binaryStuff = d.asString('png')
return HttpResponse(binaryStuff,'image / png')
def somepage(request):
return render(request,subscription / monitorSizes.html,{'form ':form,'message':'','graph':reverse('show_image')})
在urls.py
...
/ pre>
url(r'^ show_image / $','your_view。 show_image',name ='show_im年龄'),
url(r'^ somepage / $','your_view.somepage',name ='somepage'),
...
订阅/ monitorSizes.html
...
{%if graph!=''%}< img src ={{graph}}alt =some_text> {%endif%}
...
I've spent the day on this issue with no success so help would be appreciated.
I generate a graph using reportlab and successfully render it to the browser using this tutorial:
d = MyBarChartDrawing() #extract the request params of interest. #I suggest having a default for everything. if 'height' in request: d.height = int(request['height']) if 'width' in request: d.width = int(request['width']) if 'numbers' in request: strNumbers = request['numbers'] numbers = map(int, strNumbers.split(',')) d.chart.data = [numbers] #bar charts take a list-of-lists for data if 'title' in request: d.title.text = request['title'] #get a GIF (or PNG, JPG, or whatever) binaryStuff = d.asString('png') return HttpResponse(binaryStuff, 'image/png')
My issue though is that I'd like to render this png within a template, like so (does not work):
return render(request, "subscription/monitorSizes.html", {'form':form,'message':'','graph':binaryStuff})
I've been hacking away at this issue for ages. It's no doubt a newbie problem! To save my sanity, would appreciate advice on this. Many thanks :)
edit: I found another stackoverflow Q on the same issue but it was not really solved.
解决方案In views.py
def show_image(request): d = MyBarChartDrawing() #extract the request params of interest. #I suggest having a default for everything. if 'height' in request: d.height = int(request['height']) if 'width' in request: d.width = int(request['width']) if 'numbers' in request: strNumbers = request['numbers'] numbers = map(int, strNumbers.split(',')) d.chart.data = [numbers] #bar charts take a list-of-lists for data if 'title' in request: d.title.text = request['title'] #get a GIF (or PNG, JPG, or whatever) binaryStuff = d.asString('png') return HttpResponse(binaryStuff, 'image/png') def somepage(request): return render(request, "subscription/monitorSizes.html", {'form':form,'message':'','graph':reverse('show_image')})
In urls.py
... url(r'^show_image/$', 'your_view.show_image', name='show_image'), url(r'^somepage/$', 'your_view.somepage', name='somepage'), ...
In subscription/monitorSizes.html
... {% if graph != '' %} <img src="{{ graph }}" alt="some_text"> {% endif %} ...
这篇关于django:服务动态(reportlab)png到模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!