2017-08-23 3 views
0

J'utilise Tornado pour créer un serveur Web. Je dois envoyer différentes demandes dans une même classe. Voici un exemple:
Tornade: comment envoyer différentes demandes à une même classe

application.add_handlers(r"^(example).*", [ 
(r"/(mark)/(auth)"), MarkHandler, 
(r"/(mark)"), MarkHandler, 
]) 

Et la classe MarkHandler:

class MarkHandler(tornado.web.RequestHandler): 
    def get(self, mark): # /(mark) 
     print('1111') 

    def get(self, mark, auth): # /(mark)/(auth) 
     print('2222') 

Cependant, il ne semble pas fonctionner ...
Lorsque je visite le lien: www.example.com/mark, le serveur me donne une erreur:

TypeError: get() missing 1 required positional argument: 'auth'

Ce que je besoin de ci-dessus est impossible?

Répondre

0

Python n'autorise pas la surcharge de méthode comme le fait C++ ou Java. Définir la même méthode get deux fois en Python écrase simplement la première méthode avec la seconde.

Au lieu de cela, vous voulez une valeur par défaut pour le second argument:

class MarkHandler(tornado.web.RequestHandler): 
    def get(self, mark, auth=None): 
     if auth is not None: 
      print('2222') 
     else: 
      print('1111')