python tornado 工程范例

原创
2011/07/10 17:23
阅读数 3.8K

临时接个任务,写几个操作数据库视图的接口,很简单,大概就是定义一些api,响应终端的请求,返回相应的数据。

借这个机会写一个比较详细的范例教程。

1.环境

Windows 7 Ultimate 32-bit

Aptana studio 2.0;

pydev 2.2.0;

(我选用Aptana是因为平时用他来写javascript等东西,顺手就拿来写python了,我深切认为用一般的Eclipse + PyDev效果是一样一样的。而且还没有烦人的中文问题。至于中文问题呢,就python本身而言,也是有的,如果你的code中有中文字符,编译器是会报错的,大抵报的是字符问题,解决办法是在code开始的地方,写上这样的注释:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

其中关事的当然是下面那句。上面那句的作用是在linux上,此文件(.py)是可执行的。)

工程引用类库:mysql-python,tornado。(如何安装?

2. 步骤

 

让我们编写我们的主模块吧!

这是一个让人欢愉的界面,让我们开始吧。

其中,我将handler放到了另一个包中:

这样,我们的第一个效果如下:

(to be continued...)

展开阅读全文
打赏
0
3 收藏
分享
加载中
何世友博主

引用来自“wangchengcai”的评论

什么浏览器。。。

Chrome...
2012/09/27 02:49
回复
举报
什么浏览器。。。
2012/09/26 22:56
回复
举报
yak
WARNING:root:404 GET /css/extra.css (127.0.0.1) 1.00ms
WARNING:root:404 GET /css/exclamation-red.png (127.0.0.1) 0.00ms
WARNING:root:404 GET /css/extra.css (127.0.0.1) 1.00ms
访问静态资源里后台老是打印warning ,怎么样关掉这个?
2012/07/08 19:45
回复
举报
何世友博主

引用来自“yak”的评论

一个action一个连接,相当于数据库连接池,应该比全局一个db实例高效得多
另外不知道在这里面怎么 调试, 写print 并不在控制台打印消息

连接耗时多久的问题咯
我还没试过print不行的。
2012/07/08 19:44
回复
举报
yak
一个action一个连接,相当于数据库连接池,应该比全局一个db实例高效得多
另外不知道在这里面怎么 调试, 写print 并不在控制台打印消息
2012/07/08 19:28
回复
举报
何世友博主

引用来自“yak”的评论

去掉 @property就可以了, 这样应该是所有action共享一个db连接吧

不是。
基类会在每一次子类被实例化时实例化一次,因此链接是不一样的。
如果你要共享,请将db放在全局或者放在Application里。
2012/07/08 19:21
回复
举报
yak
去掉 @property就可以了, 这样应该是所有action共享一个db连接吧
2012/07/08 19:19
回复
举报
何世友博主

引用来自“yak”的评论

class BaseHandler(tornado.web.RequestHandler):
@property
def initialize(self):
self.db= database.Connection("localhost","test", "root",'root')
class TestHandler(BaseHandler):
def get(self):

为什么我这样写就不行呢
self.initialize(**kwargs)
TypeError: 'NoneType' object is not callable

initialize是个重要函数,你把它变成property,tornado能不出问题就奇怪了。
请抽空阅读tornado文档。
2012/07/08 19:11
回复
举报
yak
class BaseHandler(tornado.web.RequestHandler):
@property
def initialize(self):
self.db= database.Connection("localhost","test", "root",'root')
class TestHandler(BaseHandler):
def get(self):

为什么我这样写就不行呢
self.initialize(**kwargs)
TypeError: 'NoneType' object is not callable
2012/07/08 19:08
回复
举报
何世友博主

引用来自“yak”的评论

autoescape=True 是这个原因

clear
2012/07/08 18:53
回复
举报
更多评论
打赏
22 评论
3 收藏
0
分享
返回顶部
顶部