gpt4 book ai didi

python - 为什么 Django 的 `urlencode` 不编码斜杠?

转载 作者:太空狗 更新时间:2023-10-29 17:49:02 26 4
gpt4 key购买 nike

我看到 Django 的 urlencode 过滤器默认不对斜杠进行编码:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#urlencode

我知道我可以让它对斜线进行编码,但为什么默认情况下不这样做呢?考虑到它是 URL 中的保留字符,对斜杠进行编码是否是可接受的行为?

最佳答案

从 Django 源代码来看,urlencode 基本上是 Django 的 urlquote 实用方法的包装器。从源代码中的注释来看,urlquoteurllib.quote 的 UTF-8 安全版本。

所以 urlencode 使用与 python 的 urllib.quote 相同的默认值,urllib.quote 不转义斜线的原因可能是在 documentation 中找到:

Replace special characters in string using the %xx escape. Letters, digits, and the characters '_.-' are never quoted. By default, this function is intended for quoting the path section of the URL. The optional safe parameter specifies additional characters that should not be quoted — its default value is '/'.

所以,原因是它正在转义路径,而 '/' 是路径中完全预期且有效的字符。

关于python - 为什么 Django 的 `urlencode` 不编码斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719355/

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