【问题标题】:django decode url errordjango 解码 url 错误
【发布时间】:2016-03-08 18:06:32
【问题描述】:

当将时间戳作为过滤器参数传递时,我得到了 UnicodeDecodeError:

  • 我的要求:

    卷曲“http://localhost:8000/events?from=1985-10-26T09:00:00Z&to=1985-1027T09:00:00Z”

  • 错误:

    文件“.env/lib/python2.7/site-packages/django/core/servers/basehttp.py”,第 153 行,在 get_environ 如果 '?'在路径中: UnicodeDecodeError:“ascii”编解码器无法解码位置 31 中的字节 0xc2:序数不在范围内(128)

  • 我从 GET "from" 和 "to" 得到的两个参数有奇怪的字符:

    1985\xc2\xad10\xc2\xad26T09:00:00Z

我尝试使用“UTF-8”对其进行解码,但没有成功。有什么建议吗?

【问题讨论】:

  • 当我尝试将一些 Unicode 字符串添加到 GET 参数(例如,/search?city=Москва)时,我遇到了完全相同的问题。有一些更新吗?在发送实际请求之前,我已经阅读了所有浏览器的显示对每个 URL 执行“百分比编码”,但似乎 IE8 不知道它。

标签: python django django-rest-framework


【解决方案1】:

这并不是真正的django 相关问题。您必须在 url 中编码特殊字符。使用curl,您可以添加--data-urlencode

所以你的请求应该是这样的:

curl "http://localhost:8000/events --data-urlencode from=1985­-10­-26T09:00:00Z to=1985­-10­27T09:00:00Z

【讨论】:

  • 这将发布数据(不是 GET)。顺便说一句,如果我在浏览器中输入该 url(在发送到服务器之前由浏览器编码),也会发生错误
猜你喜欢
  • 1970-01-01
  • 2017-03-19
  • 2012-01-28
  • 2014-07-20
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多