如何防止“+”在 Django request.POST 方法中转换为空格?

Posted

技术标签:

【中文标题】如何防止“+”在 Django request.POST 方法中转换为空格?【英文标题】:How to prevent '+' from getting converted to space in Django request.POST method? 【发布时间】:2020-10-28 23:25:57 【问题描述】:

我正在尝试使用 request.POST.get() 读取电子邮件 ID 值。如果帖子数据包含带有“+”符号的电子邮件 ID,例如“example+something@gmail.com”,则会被读取为

“例如某事@gmail.com”。

我知道这是因为 + 符号被解码为空格,但是在这种情况下如何防止这种情况发生?

【问题讨论】:

我猜你想对你的字符串进行 url 编码,例如:***.com/questions/14547491/… @MLavrentyev 这有帮助!无法使用答案中所示的 urlencode 过滤器,但我使用 js 做了类似的事情。我会发布它作为答案。 【参考方案1】:

解决了!发布数据在发送之前没有被 urlencoded。对于我的场景,由于我使用 javascript XMLHttpRequest 来发布数据,因此我只是使用 js replace() 函数将“+”符号替换为“%2B”。

根据https://***.com/a/14830517/5918981的另一种方法是使用encodeURIComponent()

【讨论】:

以上是关于如何防止“+”在 Django request.POST 方法中转换为空格?的主要内容,如果未能解决你的问题,请参考以下文章

django多数据库迁移:如何防止在每个数据库中创建django默认表

如何防止 Django 基本内联自动转义

如何防止 Django Rest 中的暴力攻击 + 使用 Django Rest Throttling

如何防止 Django 覆盖 sessionid cookie?

当架构中不存在字段时,如何防止 django 出错?

如何防止在 Django Admin 中对 FK / MTM 字段进行自我(递归)选择