Xiaoxia[PG]

玩玩Tornado,写了一个网络相册分享照片

Internet、我的代码32 条评论

Tornado是一个用python写的小巧的开源网站服务器。安装来玩了一下,的确很强大,响应速度很快!这东西是Facebook开发的,但奇怪的是官网 http://www.tornadoweb.org/ 的IP查出来却是Google的呢,难怪连华工的校园网也能连上了。

花了一晚时间,写了如下的一个Web相册,用来分享照片给同学 🙂 可见开发效率之高,o(∩∩)o...哈哈,代码量也很少。

241

界面简简单单的,功能挺实用。

目录浏览功能:

239

幻灯片浏览功能:

240

帅吧!!!

我在服务器上也跑了一个tornado,可以用来浏览我的博客的图片。

http://gallery.xiaoxia.org/

这东西应该还有各种bug的,欢迎指出 😀

最后,上代码: Tornado Web Photo Gallery

#gallery#python#tornado

32 条评论

  1. 代码没放在线仓库里?
    tornadoweb.org 是在 GAE 上的,有段时间因此而墙内不能访问。

  2. 这个相册挺不错,不过我的服务器只支持php,我更期待php的....

    1. = =PHP版写起来很容易啊很快写完,不过熟悉tornado后开发效率应该更快

      1. 等着你的php版本,呵呵
        我对编程没有多少了解,到了大学得向你好好学习。
        对了,你应该大学毕业了吧?

        1. 我高三学生,小虾应该还没大学毕业哈哈哈

  3. tornadoweb.org用google的开源平台了吧

    1. 嗯,的确是这样的。网站放在app engine上了。

  4. 1.肖像权(/tx);
    2.感觉没有评论功能的相册是不够强大的,不过应当是可以用wordpress的模板

    1. 话说,我这个相册是不支持数据库功能的~

      1. 小虾,是不是考虑搞一个中国版的图片社交软件?

        1. 哇!有哪个网站可以模仿吗?
          picasa? facebook? flickr?

          1. flickr吧。。嘿嘿 这个感觉最好看了。。其他的UI怎么不习惯。。

          2. FACEBOOK不是刚收购了一个吗?就是图片社交,我们中国这边手机端的图片社交还没有呢

  5. 20岁的年轻小伙啊,哈哈。
    有兴趣你可以顺便研究下它的安全性。。。。

    1. 哈,v是代表图片的版本号,通过图片内容算出来的。
      因为图片数量很多,虽然现在浏览器都有缓存,但是默认都会发送请求来询问服务器文件是否改变,然后服务器发送304说Not Modified,其实很麻烦。
      现在服务器的回应头设置了图片缓存一年,也就是说这个缩略图会在浏览器缓存起来,你浏览下一个页面的时候,浏览器只不会再发送这个图片的获取请求,除非url发生改变,例如这个v的值发生改变,否则缓存是不会变更的。
      所以这样做能够加快网页加载速度,也减轻服务器的负担。

      1. 啊啊,原来还可以这样啊~~~学习了~
        谢谢~~

    2. 为了验证一下,你可以在调试器里看看,浏览一个刚才浏览过的页面,就会发现只请求一个网页连接,一瞬间全部图片都出来了。

  6. tornado要怎么开启gzip啊?我试了,用nginx反向代理tornado,还是没开启gzip。

  7. 小虾,代码放在github上吧:)

    1. 嗯,我有这个打算! 你是指这个的代码还是指我所有开源东西的代码呢?

      1. 开源的放在github上,不愿意开源的可以放bitbucket。
        保证代码的安全,而且版本管理很有用,将来找实习或者找工作时,一个github账号胜过一份长长的简历。

        1. 好!我过段时间空闲了,就整理我所有的代码 🙂

  8. 请教一下,我使用python2.6 ./server.py遇到中文的目录不会出问题。但如果是nohup python2.6 ./server.py >./log.txt 2>&1 &这样,访问中文目录,就会出现:
    ERROR:root:Uncaught exception GET /gallery/%E5%AE%9D%E5%AE%9D (220.178.24.166)
    HTTPRequest(protocol='http', host='actself.me:8888', method='GET', uri='/gallery/%E5%AE%9D%E5%AE%9D', version='HTTP/1.1', remote_ip='220.178.24.166', body='', headers={'Connection': 'keep-alive', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4', 'Accept-Encoding': 'gzip,deflate,sdch', 'Referer': 'http://actself.me:8888/gallery/', 'Host': 'actself.me:8888', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36'})
    Traceback (most recent call last):
    File "/usr/lib/python2.6/site-packages/tornado/web.py", line 987, in _execute
    getattr(self, self.request.method.lower())(*args, **kwargs)
    File "/var/www/photos.actself.me/handler/gallery.py", line 31, in get
    print "get", path, 'from', self.request.remote_ip
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    ERROR:root:500 GET /gallery/%E5%AE%9D%E5%AE%9D (220.178.24.166) 1.71ms

    请问小虾这是喂神马?

  9. 哦。我添加了
    reload(sys)
    sys.setdefaultencoding('utf8')
    后解决了。

    1. Linux系统吗?

  10. 可否给加个友链?

    1. PR多少呢~~

  11. 最近两天,我也在学习tornado,恰好看到了你的这篇文章,看了下代码,发现当图片为中文时候,图片显示不出来,原因是你在处理get()时候,中文名字没有encode。稍微修改下应该就可以了。当然这篇文章已经好久了。我看评论里没人指出。

    顺便说,我不会CSS,我把你的CSS拿来用了哈。

    1. 好久之前的习作了,现在我更喜欢用flask框架,因为扩展性更好,所以直接用 flask-bootstrap来写。

发表评论

评论会经过自动审核,链接请勿超过 3 个。