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

13

让我们看一些使用案例! - Yuji 'Tomita' Tomita
1
阅读此内容:https://dev59.com/Y3I-5IYBdhLWcg3wO1vl - catherine
2个回答

10
从Django源代码来看,urlencode基本上是Django的urlquote实用程序方法的包装器。从源代码中的注释可以看出,urlquoteurllib.quote的UTF-8安全版本。
因此,urlencode使用与Python的urllib.quote相同的默认值,urllib.quote不转义斜杠的原因可以在documentation中找到:
“使用%xx转义字符串中的特殊字符。字母、数字和字符“_.-”永远不会被引用。默认情况下,此函数旨在引用URL的路径部分。可选的safe参数指定不应该被引用的其他字符——它的默认值为“/”。”
因此,它转义路径的原因是'/'是路径中完全预期和有效的字符。

2

要在Django模板中使urlencode转义/,请使用{{ variable|urlencode:'' }}

解释:额外的可选参数告诉urlencode哪些字符是“安全”的,其中默认值为'/',因此传递空字符串告诉urlencode不安全并应该编码/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接