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