目录
-
initialize()
对应每个请求的处理类Handler在构造⼀个实例后⾸先执⾏initialize()⽅法。将路由 映射中的第三个字典型参数会作为该⽅法的命名参数传递,如: class ProfileHandler(RequestHandler): def initialize(self, database): self.database = database def get(self): ... app = Application([ (r'/user/(.*)', ProfileHandler, dict(database=database)), ]) 此⽅法通常⽤来初始化参数(对象属性),
-
prepare()
import json class IndexHandler(RequestHandler): def prepare(self): if self.request.headers.get("ContentType").startswith("application/json"): self.json_dict = json.loads(self.request.body) else: self.json_dict = None def post(self): if self.json_dict: for key, value in self.json_dict.items(): self.write("<h3>%s</h3><p>%s</p>" % (key, value)) def put(self): if self.json_dict: for key, value in self.json_dict.items(): self.write("<h3>%s</h3><p>%s</p>" % (key, value))
-
HTTP方法
-
调用顺序
class IndexHandler(RequestHandler): def initialize(self): print "调⽤了initialize()" def prepare(self): print "调⽤了prepare()" def set_default_headers(self): print "调⽤了set_default_headers()" def write_error(self, status_code, **kwargs): print "调⽤了write_error()" def get(self): print "调⽤了get()" def post(self): print "调⽤了post()" self.send_error(200) # 注意此出抛出了错误 def on_finish(self): print "调⽤了on_finish()" 在正常情况未抛出错误时,调⽤顺序为: 1. set_defautl_headers() 2. initialize() 3. prepare() 4. HTTP⽅法 5. on_finish() 在有错误抛出时,调⽤顺序为: 1. set_default_headers() 2. initialize() 3. prepare() 4. HTTP⽅法 5. set_default_headers() 6. write_error() 7. on_finish()