Tornado:如何将不同的请求分派给同一个 class
Tornado: how to dispatch different requests to a same class
我正在使用 Tornado 构建网络服务器。我需要将不同的请求分派到同一个 class。这是一个例子:
application.add_handlers(r"^(example).*", [
(r"/(mark)/(auth)"), MarkHandler,
(r"/(mark)"), MarkHandler,
])
和 class MarkHandler
:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark): # /(mark)
print('1111')
def get(self, mark, auth): # /(mark)/(auth)
print('2222')
不过好像不行...
当我访问 link: www.example.com/mark
时,服务器给我一个错误:
TypeError: get() missing 1 required positional argument: 'auth'
我需要的如上是不可能的?
Python 不允许像 C++ 或 Java 那样的方法重载。在 Python 中两次定义相同的方法 get
只是用第二个方法覆盖第一个方法。
相反,您需要第二个参数的默认值:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark, auth=None):
if auth is not None:
print('2222')
else:
print('1111')
我正在使用 Tornado 构建网络服务器。我需要将不同的请求分派到同一个 class。这是一个例子:
application.add_handlers(r"^(example).*", [
(r"/(mark)/(auth)"), MarkHandler,
(r"/(mark)"), MarkHandler,
])
和 class MarkHandler
:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark): # /(mark)
print('1111')
def get(self, mark, auth): # /(mark)/(auth)
print('2222')
不过好像不行...
当我访问 link: www.example.com/mark
时,服务器给我一个错误:
TypeError: get() missing 1 required positional argument: 'auth'
我需要的如上是不可能的?
Python 不允许像 C++ 或 Java 那样的方法重载。在 Python 中两次定义相同的方法 get
只是用第二个方法覆盖第一个方法。
相反,您需要第二个参数的默认值:
class MarkHandler(tornado.web.RequestHandler):
def get(self, mark, auth=None):
if auth is not None:
print('2222')
else:
print('1111')