gpt4 book ai didi

python - Django - Url 模式正则表达式不匹配带重音的字符串参数

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

我在将带有重音符号的字符串参数传递给我的 Django 应用程序时遇到了一些问题。我有以下网址模式:

url(r'^galeria/(?P<page>\d+)/(?P<order>\w+)/(?P<query>[\w|\W]+)', 'possible_brastemp.views.gallery_with_page_and_query'),

当我尝试这样的 url 时:

 http://127.0.0.1:8000/galeria/1/ultimos/Julian%20Andr%E9s

模式不匹配。我已将问题隔离到“%E9”字符(“%20”不会中断匹配)。

如何更改正则表达式以匹配带有编码字符的参数?

谢谢

最佳答案

在 URL 中使用 %c3%a9 而不是 %e9。正则表达式没有失败...... Django 甚至没有进入 urlconf。检查日志,您可能收到 400 条错误。

URI 路径应该只包含 UTF-8 编码的字符。任何不能表示为普通的、可打印的 ASCII 字符(并且不在保留列表中)的 UTF-8 字符都应该进行百分号编码。

é (U+00E9) 是 UTF-8 中的多字节字符:0xc3a9。百分比编码形式为 %C3%A9。单字节 0xe9 不是有效的 UTF-8 字符。

参见 RFC 3986 .

[\w|\W]+ 成功匹配包含 %C3%A9 的 URL。 Django 似乎将 URL 字节字符串百分比解码为 Unicode 字符串,然后将其转换为 UTF-8 以进行 urlconf 匹配。

关于python - Django - Url 模式正则表达式不匹配带重音的字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11695321/

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