Python Tornado:routes中同一类中的不同方法

Python Tornado:routes中同一类中的不同方法,python,tornado,Python,Tornado,我对龙卷风很陌生。我可以用下面这样的东西吗 课程 class HomeHandler(BaseHandler): def get(self): return self.render("home.html") def login(self): return self.render("login.html") (r"/", HomeHandler), (r"/login", HomeHandler.login, dict(db=db)), 路线

我对龙卷风很陌生。我可以用下面这样的东西吗

课程

class HomeHandler(BaseHandler):

    def get(self):
        return self.render("home.html")

    def login(self):
        return self.render("login.html")
(r"/", HomeHandler),
(r"/login", HomeHandler.login, dict(db=db)),
路线

class HomeHandler(BaseHandler):

    def get(self):
        return self.render("home.html")

    def login(self):
        return self.render("login.html")
(r"/", HomeHandler),
(r"/login", HomeHandler.login, dict(db=db)),
这是行不通的。我尝试使用
HomeHandler.login()
,但不确定如何传递所需的引用(应该类似于self)


我感谢你的帮助。谢谢不,那是不可能的。Tornado根据HTTP请求选择要调用的方法(
get
post
,等等),因此无法在路由表中指定替代方法。改为使用不同的类(可能与公共基类一起使用)

不,那是不可能的。Tornado根据HTTP请求选择要调用的方法(
get
post
,等等),因此无法在路由表中指定替代方法。改为使用不同的类(可能与公共基类一起使用)

Tornado使用了“处理程序”的概念,它在特定路径上处理请求。处理程序是类。在内部,Tornado从这些类中选择与请求中使用的HTTP谓词相对应的方法

在您的例子中,您有两个路径:
/
/login
,让我们分别称它们为“Home”和“login”。现在,您需要有两个处理程序:
HomeHandler
LoginHandler
,并将它们分配到相应的路由

路线:

(r"/", HomeHandler),
(r"/login", LoginHandler, {"db": db})
处理程序类:

class HomeHandler(BaseHandler):

    def get(self):
        # Will work for GET yoursite.com/, e.g. when opened in a browser
        # The next line will render a template and return it to the browser
        self.render("home.html")


class LoginHandler(BaseHandler):

    def initialize(self, db):
        # That `db` from route declaration is passed as an argument
        # to this Tornado specific method
        self.db = db

    def get(self):
        # Will work for GET yoursite.com/login, e.g. when opened in a browser
        # You may use self.db here
        # The next line will render a template and return it to the browser
        self.render("login.html")

    def post(self):
        # Will work for POST yoursite.com/login, e.g. when the data
        # from the form on the Login page is sent back to the server
        # You may use self.db here
        return

Tornado使用“处理程序”的概念,处理程序在特定路径上处理请求。处理程序是类。内部Tornado从这些类中选择与请求中使用的HTTP谓词相对应的方法

在您的例子中,您有两个路径:
/
/login
,让我们分别称它们为“Home”和“login”。现在,您需要有两个处理程序:
HomeHandler
LoginHandler
并将它们分配到相应的路由

路线:

(r"/", HomeHandler),
(r"/login", LoginHandler, {"db": db})
处理程序类:

class HomeHandler(BaseHandler):

    def get(self):
        # Will work for GET yoursite.com/, e.g. when opened in a browser
        # The next line will render a template and return it to the browser
        self.render("home.html")


class LoginHandler(BaseHandler):

    def initialize(self, db):
        # That `db` from route declaration is passed as an argument
        # to this Tornado specific method
        self.db = db

    def get(self):
        # Will work for GET yoursite.com/login, e.g. when opened in a browser
        # You may use self.db here
        # The next line will render a template and return it to the browser
        self.render("login.html")

    def post(self):
        # Will work for POST yoursite.com/login, e.g. when the data
        # from the form on the Login page is sent back to the server
        # You may use self.db here
        return