Я играл с Tornado, и я написал код, который выглядит не очень приятным.
Я пишу приложение для хранения рецептов в качестве примера. Это мои обработчики:
handlers = [
(r"/recipes/", RecipeHandler),
(r"/recipes", RecipeSearchHandler), #so query params can be used to search
]
Это привело меня к написанию:
class RecipeHandler(RequestHandler):
def get(self):
self.render('recipes/index.html')
class RecipeSearchHandler(RequestHandler):
def get(self):
try:
name = self.get_argument('name', True)
self.write(name)
# will do some searching
except AssertionError:
self.write("no params")
# will probably redirect to /recipes/
Есть ли лучший способ приблизиться к этим URL-адресам без try/except? Мне бы хотелось /recipes and/recipes/показать ту же самую вещь, тогда как /recipes? Name = что-то будет делать поиск и в идеале быть другим обработчиком.