好吧,这在很大程度上是风格上的。在这种情况下,每个请求处理程序都代表从一个方法中删除一个if语句。我认为限制RequestHandlers的数量可能更清楚。我认为使用一个处理程序和三个路由可以实现最清晰的结果。
我还丢弃了您的项目3。因为它是项目6的重复项。如果真的有一个“ items / new”
URL非常重要,那么我们可以放回去。尽管我认为此时您需要另一个处理程序为清楚起见而上课。
class ItemHandler(tornado.web.RequestHandler): def get(self, item_id=None, edit=False): if item_id: # get item from db if edit: new_data_from_query_string = self.get_argument('item_data') # do edit, save item # return item else: # return index def put(self, item_id): data = self.get_argument('item_data') # do your update for item def post(self): data = self.get_argument('item_data') # do your item creation def delete(self, item_id): # do your deletion for item_id然后可以像这样创建实际的应用程序:
tornado.web.application([ (r'/items$', ItemHandler), (r'/items/(d+$)', ItemHandler), (r'/items/(d+)/(edit)$', ItemHandler),])
如果您想要’/ items / new’网址,那么我可能建议将其放在单独的处理程序中,因为否则会使逻辑过于复杂。



