Tornado源码浅探分析(二)之RequestHandler

2019-04-11  本文已影响0人  随风而去_c0e8

tornado的两个关键模块就是web和 ioloop
RequestHandler就是封装在web.py里面,它是每个视图类必须继承的父类
它里面有几种方法用处很多:

  1. \color{red}{ set\_status} (status_code, reason):设置回复状态码,status_code是响应状态码,reason是响应描述

  2. \color{red}{ get\_status}():返回我们回复的状态码

  3. \color{red}{get\_query\_argument}(name, default=_ARG_DEFAULT, strip=True):获取url里面镶嵌参数的值,如果参数在url出现多次,取最后一次的值,如果没有参数就使用默认值,strip是否去掉参数两边的空格

  4. \color{red}{ get\_query\_arguments}(name, strip=True):返回给定参数名称值的列表,获取url里面参数名称一样的多个值,获取不到返回空列表

  5. \color{red}{ get\_body\_argument}(name,default=_ARG_DEFAULT, strip=True):获取body里面的参数,一般为获取post发送的数据。

  6. \color{red}{ get\_body\_arguments}(name, strip=True):获取body里面参数名相同的参数值,获取不到返回空列表,一般为获取post发送的数据。

  7. \color{red}{ get\_argument}(name,default,strip= True):这个是整合上面两种获取参数的方法,只需要在请求中调用这个方法就行,如果是post请求就相当于get_body_arguments()

    def __init__(self, application, request, **kwargs):
        super(RequestHandler, self).__init__()

        self.application = application
        self.request = request
        self._headers_written = False
        self._finished = False
        self._auto_finish = True
        self._transforms = None  # will be set in _execute
        self._prepared_future = None
        self._headers = None  # type: httputil.HTTPHeaders
        self.path_args = None
        self.path_kwargs = None
        self.ui = ObjectDict((n, self._ui_method(m)) for n, m in
                             application.ui_methods.items())
      
        self.ui["_tt_modules"] = _UIModuleNamespace(self,
                                                    application.ui_modules)
        self.ui["modules"] = self.ui["_tt_modules"]
        self.clear()
        self.request.connection.set_close_callback(self.on_connection_close)
        self.initialize(**kwargs)

在初始化的时候application和request参数是不需要管的,框架会自动代入进去。子类可以重写self.initialize方法,会自动调用。

上一篇下一篇

猜你喜欢

热点阅读