码迷,mamicode.com
首页 > Web开发 > 详细

tornado—–Handler Url正则

时间:2015-02-28 14:23:54      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

转自:http://my.oschina.net/jiemachina/blog/204878

tornado(二)—–Handler Url正则

handler url正则匹配, get/post

1. 简单

    application = tornado.web.Application([
        (r‘/‘, MainHandler)
    ], **settings) 

2. 带有参数

    class ProfileHandler(RequestHandler):
            def initialize(self, database):
                self.database = database

            def get(self, username):
                print username

        app = Application([
            (r‘/user/(.*)‘, ProfileHandler, dict(database=database)),
            ])

这段代码来至tornado.web.RequestHandler的initialize的注释中,上面的(.*)就是用来匹配 get方法中的参数,如: 第一个(.*) 匹配 username; 那如果想要get有多个参数:如get(self, username, password); 那么配置r‘/user/(.*)/(.*)‘就可以了第二(.*)正则匹配组的值;列举几个例子吧:

如下:

url: localhost:9002/user/
hander_parse: (r‘/user/‘, ProfileHandler)
get(self):

-------------------------------------------
url:localhost:9002/user/username/password
hander_parse: (r‘/user/(.*)/(.*)‘, ProfileHandler)#这里主要正则匹配url,
get(self, username, password):
    print username, ‘  ‘, password

-------------------------------------------
url:localhost:9002/user/username_password
hander_parse: (r‘/user/(.*)_(.*)‘, ProfileHandler)
get(self, username, password):
    print username, ‘  ‘, password

那如果像在url中传递很多的参数的时候,这样写get方法不会就有很多参数???所以还有一种简单的方法

get(self, *args):
    print str(args)

所以上面说了那么多的废话,以后就都用这种吧;

3. 理解正则匹配的过程

在Application中debug,就可以查看tornado.web.py的源码. 
从:

(r‘/profile/(.*)‘, ProfileHandler, dict(database="mysql"))

—-> 转化成

URLSpec(r‘/profile/(.*)‘, ProfileHandler, dict(database="mysql"))
# 会把所有的URLSpec放到self.handlers 中

然后RequestHandler的子类会

kwargs={‘database‘: ‘mysql‘} 

—>

调用 RequestHandler.initialize(**kwargs)

所以当有dict(database=database)

(r‘/user/(.*)‘, ProfileHandler, dict(database=database)),

的时候就可以有:

def initialize(self, database):
    self.database = database

tornado—–Handler Url正则

标签:

原文地址:http://www.cnblogs.com/albzcj/p/4305237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!