tornado 官方文档学习(tornado.web — RequestHandler )

tornado.web — RequestHandler and Application classes
这儿给出了个最简单的例子 “hellow world”

import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler),
])
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

从多线程的角度来说 RequestHandler 方法是不安全的,特别的对于方法write(),finish(),和flush()必须通过主线程调用。如果你用多线程调用在这些方法(write ,finish , flush) ,那么你就应该再完成请求前调用方法IOLoop.add_callback将调用转接给主线程。

RequestHandler

1.1 Request handlers

class tornado.web.RequestHandler(application, request, **kwargs)

request 可以是 get() 或post()处理函数,如果你想让子类支持其他的标准请求 GET/HEAD/POST 等。你可以在子类中覆盖这些方法。

比如
class dealMethod (tornado.web.RequestHandler)
def get():
……..
def head():
……..

1.2 RequestHandler.initialize()
这个官方文档的解释不好翻译,不过举了例子大家一看就明白,
这个方法的大概作用是构造些个变量,给这RequestHandler的子类使用。这些变量以字典的方式通过url spec的第三个参数传递:

  class ProfileHandler(RequestHandler):

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

我们定义了一个子类,传递参数database

在应用中加载子类时通过如下方式传递database这个参数
  app = Application([

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

1.3
RequestHandler.prepare()
RequestHandler.on_finish()

RequestHandler.get(*args, **kwargs)
RequestHandler.post(*args, **kwargs)
RequestHandler.put(*args, **kwargs)
RequestHandler.delete(*args, **kwargs)
RequestHandler.head(*args, **kwargs)
RequestHandler.options(*args, **kwargs)

1.4 input
1.4.1 RequestHandler.get_argument(name,default=[],strip = True)
返回所给name变量所对应值的unicode编码,如果所给的变量不存在并且没有给变量的默认值,那么会抛出MissingArgumentError,如果所给的变量超过了一个那么会返回最后一个所对应的变量。

1.4.2RequestHandler.get_arguments(name,strip = True)
返回所给变量对应值的列表,如果不存在返回空列表。
RequestHandler.get_query_argument(name, default=[], strip=True)
1.4.3这个函数跟get_argument 是一样的,只不过在版本3.2中才出现。

1.4.4RequestHandler.path_args
RequestHandler.path_kwargs

The path_args and path_kwargs attributes contain the positional and keyword arguments that are passed
to the HTTP verb methods. These attributes are set before those methods are called, so the values are available
during prepare.

1.5 Output
1.5.1
RequestHandler.set_status(status_code, reason=None)

RequestHandler.set_header(name, value)
RequestHandler.add_header(name, value)
RequestHandler.clear_header(name)
RequestHandler.set_default_headers()

1.5.2
RequestHandler.write(chunk)
将所给的内容作为输出。并通过flush 方法写在网页上。如果所给的内容是一个字典,那么将它看成Json格式。

RequestHandler.flush(include_footers=False, callback=None)

RequestHandler.finish(chunk=None)
RequestHandler.render(template_name, **kwargs)
渲染模板,并为模板传递参数。
RequestHandler.redirect(url, permanent=False, status=None)
如果我们给出了status变量的值,那么这个值将会做为http状态码。
否则的华我们见会返回http状态码301或302,这个选择取决于argument变量,默认情况下返回302.

1.6 Cookies
RequestHandler.cookies

RequestHandler.get_cookie(name, default=None)

RequestHandler.set_cookie(name, value, domain=None,expires=None,path=’/’,expires_days=None, **kwargs)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值