Ram*_*hum 12 python django url urlencode
我看到Django的urlencode过滤器默认不编码斜杠:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#urlencode
我知道我可以对斜杠进行编码,但为什么不默认呢?是不是接受了对斜杠进行编码的行为,因为它是URL中的保留字符?
从Django源代码,urlencode基本上是Django的urlquote实用方法的包装器.从源代码中的评论来看,urlquote是一个UTF-8安全版本urllib.quote.
所以urlencode使用与python相同的默认值urllib.quote,并且urllib.quote可以在文档中找到不逃避斜杠的原因:
使用%xx转义替换字符串中的特殊字符.从不引用字母,数字和字符"_.-".默认情况下,此函数用于引用URL的路径部分.可选的安全参数指定不应引用的其他字符 - 其默认值为"/".
所以,原因是它正在逃避路径,并且'/'是路径中完美预期且有效的角色.