SAE上使用matplotlib绘图

我会展开,把我建站的时候遇到的困难一一道来。

SAE上的建议就是matplotlib绘图,图保存在StringIO中,然后从内存中拿出来用。于是绘图的过程如下:

buf = StringIO.StringIO()
fig.savefig(buf, format='png', transparent=True)
return buf
想要显示的话,就需要在GET方法中返回buf中的内容

class GeImage:

    def GET(self):
        self.buf = plot_object.plot()
        self.buf.seek(0)
        self.contents = self.buf.getvalue()
        return self.contents
把url绑定到GeImage类中,点击url就可以看到图片了。

我的网站交互是这样的,在搜索框中输入名字,然后把名字传入后台,从数据库搜索数据,绘图,然后展示到网页中,而且图片是嵌入网页中的。如何把输入和输出 在类中传递着实伤透了脑筋,后来,我发现其实很简单。

首先就是搜索框中的内容传入template


class SearchForm:       
    def GET(self):       
        data = web.input()
        self.name = data.search_form
        return self.render.index(self.name)
然后再把名字通过template传入GeImage类中

<div class="content"><h3>$name的登录时间统计:</h3><img id="login_figure" src="/image?name=$name" alt="login time figure"><br></div>
web.py中?后面的数据会传入GET方法中。然后就可以到GeImage绘图了。

也可以这考虑,我把图表生成到image?name=***的链接中,然后从template中调用。只是图片是调用的时候才生成的。是不是很简单呢?

以下就是夹带私货了。首先是吐槽,SAE对python调试的支持实在是太差了。只有少数错误可以提醒,比如import错误,就连名称错了都不能提醒在哪一行。很多时候我只能一次一次提交代码,就这个简单的网站,我提交了接近400次。如果提交的太频繁,SAE的服务器经常会屏蔽掉我。

可以与之对比的是百度网盘,百度网盘的容量一下子提高到了1000G,然后大家纷纷把电视剧电影都下载到百度网盘中,这其中有着大量的重复内容,百度的付出其实比之前并不会多太多,但是用户这边的体验却上升到了好几个档次,我甚至都用它取代移动硬盘了。

把产品做好,可以大大提高用户体验的同时,成本却不会增加那么多。

做网站的时候,本来有很多的点要说的,但是太久远了,竟然也就忘记了。就这样吧。

源代码:https://github.com/gt11799/kanzhihu


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值