gpt4 book ai didi

python - TurboGears 会替换 URL 中的哪些字符?

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

我有一个简单的 TurboGears 2 脚本,名为 app.py:

#!/usr/bin/env python3

from wsgiref.simple_server import make_server
from tg import expose, TGController, AppConfig

class RootController(TGController):
@expose()
def all__things(self):
return "Hello world!"

config = AppConfig(minimal=True, root_controller=RootController())

print("Serving on port 5000...")
httpd = make_server('', 5000, config.make_wsgi_app())
httpd.serve_forever()

当我运行 app.py 并访问 http://localhost:5000/all__things 时,我看到“ Hello World !”正如预期的那样。但这些 URL 也有效:

http://localhost:5000/all--things
http://localhost:5000/all@@things
http://localhost:5000/all$$things
http://localhost:5000/all++things
http://localhost:5000/all..things
http://localhost:5000/all,,things

以及组合:

http://localhost:5000/all-_things
http://localhost:5000/all_-things
http://localhost:5000/all-@things
http://localhost:5000/all@-things
http://localhost:5000/all$@things
http://localhost:5000/all@$things

等等...

TurboGears URL 中可替换下划线的字符的完整列表是什么?

此外,此功能是否可以限制为仅替换某些字符?理想情况下,我希望带有破折号 ( http://localhost:5000/all--things ) 的 URL 能够工作,而带有下划线 ( http://localhost:5000/all__things ) 或任何其他奇怪字符的 URL 不起作用。

最佳答案

它由 path_translator 管理,可以通过 app_cfg.py 中的 dispatch_path_translator 选项进行配置。可以通过传递 None 或提供自定义函数来禁用它。

提供的任何函数都将接收当前正在处理的路径部分,并且必须将其标准化返回。

默认路径转换器基于string.punctuation(请参阅https://github.com/python/cpython/blob/c30098c8c6014f3340a369a31df9c74bdbacc269/Lib/string.py#L31)

如果您有自定义路由需求,我建议您考虑https://github.com/TurboGears/tgext.routes这可能会通过 @route 装饰器帮助您处理更复杂的情况。

关于python - TurboGears 会替换 URL 中的哪些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40686810/

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