我试图让 webapp2 在将所有路由参数发送到处理程序的 get() 方法之前自动将它们解码为 utf-8。我尝试在所有处理程序继承的 BaseHandler 类中重写dispatch(),但我只能通过请求对象读取参数,而不能更改它们。我该如何最好地做到这一点?
编辑
糟糕的是,这与传统的 GET 参数无关,而是处理程序的 get() 方法作为关键字参数接收的 URL 的路由部分。当它们包含匹配 URL 中的 unicode 字符时,它们必须是 .decode('utf-8'),否则将给出 UnicodeDecodeError。我希望避免必须为系统中的每个处理程序和路由参数手动进行这些解码。
最佳答案
这是我选择的解决方案,因为解码是完全自动处理的。
重写其他处理程序继承自的处理程序基类的dispatch()方法,并向其中添加以下代码:
route_kwargs_decoded = {}
for key, value in self.request.route_kwargs.iteritems():
route_kwargs_decoded[key] = value.decode('utf-8')
self.request.route_kwargs = route_kwargs_decoded
对于 webapp2 开发人员来说,我认为可能值得考虑在未来的 webapp2 版本中将此功能实现为一项功能,因为它似乎应该由框架自动处理,或者至少通过设置来处理。
关于python - 如何使处理程序自动对所有路由参数进行 .decode ('utf-8' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114151/