gpt4 book ai didi

python - Tornado 请求处理程序映射到国际字符

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:15 27 4
gpt4 key购买 nike

我希望能够匹配一些国际化字符的 URL 请求,例如 /Comisión。这是我的设置:

class Application(tornado.web.Application):
def __init__(self):
handlers = [
'''some handlers, and then this: '''
(r"/([\w\:\,]+)", InternationalizedHandler)
]
tornado.web.Application.__init__(self, handlers, **settings)

但在 Tornado 中设置语言环境似乎不是正确的解决方案。如何设置正则表达式来捕获诸如 é,å,µ 等字符?改变 python 中的 re 模式可以吗?

最佳答案

TL;DR:使用 Tornado 的内置路由器是不可能的。

Tornado 将处理程序模式的正则表达式编译埋藏得非常深,所以@stema 关于使用 re.Unicode 标志的建议很困难,因为尚不清楚将标志传递到哪里。有两种方法可以解决该特定问题:子类化 URLSpec 并覆盖 __init__ 函数,或者在模式中放置标志前缀。

第一个选项需要大量工作。第二个选项利用了 Python 的 re 模块中的一个特性,其中模式可以在模式的开头指定 (?u) 而不是传入 re .UNICODE 标志作为参数。

不幸的是,这两个选项都不起作用,因为 Tornado 会在 将其百分比解码为 un​​icode 字符串之前将模式与请求 URL 进行匹配。因此,使用 Unicode 标志编译模式没有任何效果,因为您匹配的是百分比编码的 ASCII URL,而不是 Unicode 字符串。

关于python - Tornado 请求处理程序映射到国际字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com