python - 如何使处理程序自动对所有路由参数进行 .decode ('utf-8' )?

标签 python google-app-engine webapp2

我试图让 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/

相关文章:

python - 我需要在 SVM 中计算预测时间的历史记录吗?

python - 使用selenium写入Chrome控制台

python - "De-instrument"来自 sqlalchemy ORM 的实例化对象

java - 如何在 objectify 中编写索引,首先返回最新的结果?

google-app-engine - Appengine 上的通配符子域通过 Firefox 上的 https

python - 谷歌应用引擎: webapp2 routing not working

python - 如何从过滤器的字典列表中提取数据

java - 在 Google App Engine 端点 (Java) 中设置响应 header

python - 谷歌应用引擎: Response "Content-Length" header is always 0

python - 缺少 'webapp2_extras.sessions' 的配置键 : ['secret_key' ]