Торнадо не казнить предка - PullRequest
0 голосов
/ 31 августа 2018

Мой код, использующий торнадо, состоит из базового класса TbHandler, который обрабатывает основные операции JSON, и его преемника ApiLoginHandler.

Но когда я POST JSON ApiLoginHandler, prepare TbHandler не был вызван.

Вот мой базовый класс предков

class TbHandler(tornado.web.RequestHandler):
    def __init__(self, application, request, **kwargs):
        super(TbHandler, self).__init__(application, request, **kwargs)
        self.response = dict()

    def prepare(self):  ## <- expected of position breakpoint
        if 'content-type' in self.request.headers and \
         ...

Затем, ниже наследник TBHandler

class ApiLoginHandler(TbHandler):
    def initialize(self, process):
        self.process = process

    async def post(self):
      if "username" not in self.request.arguments:
          reason = 'invalid request: missing username'
          self.set_status(400)
          self.finish({"reason": reason})
          return

Когда отправляете json в api, как показано ниже.

curl 'http://localhost:5000/api/auth/login' -H' Принять: application / json '-H' Content-Type: application / json; charset = UTF-8 ' --data-binary '{"username": "admin", "password": "ehllow"}'

Ответ был {"reason": "invalid request: missingusername"}

Мой ожидаемый порядок вызова такой же, как и ниже, но подготовленный () не вызывался.
1. TbHandler :: init ()
2. TbHandler :: prepare () <--- он не был вызван <br> 3. ApiLoginHandler :: post ()

Что я ошибся?

...