如何从Django中的编码URL获取请求参数?

时间:2019-03-12 18:46:11

标签: python json django django-rest-framework urlencode

我正在使用Django Rest Framework。

API接收带有编码为URL的json对象的GET请求。例如:

/endpoint?%7B%0D%0A++%22foo%22%3A%5B%22bar%22%2C%22baz%22%5D%0D%0A%7D

解码参数在哪里

{
  "foo":["bar","baz"]
}

我在Django或DRF的文档中找不到任何指向框架如何处理的内容,因此我可以通过执行类似以下操作来获得带有json对象的QueryDict

request.query_params # Should yield a dict -> {foo=[bar,baz]}

如何在Django Rest Framework中解码JSON编码的URL?

请注意,我的实际参数要复杂得多。使用POST并不是一种方法,因为调用者非常依赖缓存和书签

1 个答案:

答案 0 :(得分:-1)

Urllib应该这样做:

from urllib.parse import unquote
url = "endpoint?%7B%0D%0A++%22foo%22%3A%5B%22bar%22%2C%22baz%22%5D%0D%0A%7D"
url = unquote(url)
print(url)

上面的代码几乎可以正常工作,但是编码可能不正确,不确定:

endpoint?{
++"foo":["bar","baz"]
}