django-rest-framework是否接受JSON数据?

39 人关注

我已经用以下方法创建了RESTFul APIs . The user endpoint is: /api/v1/users

我想创建一个新用户,所以我以JSON格式发送用户数据。

"username": "Test1", "email": "test1@gmail.com", "first_name": "Test1", "last_name": "Test2", "password":"12121212"

我正在使用谷歌浏览器的扩展程序Postman来测试API。但是,在发送请求后,用户数据没有被保存。响应包含这个错误。

"detail": "Unsupported media type \"text/plain;charset=UTF-8\" in request."

这就是Postman中请求细节的样子。

1 个评论
顺便说一下,postman 2.0版本已经发布,它有一个很好的用户体验和新的功能与newman自动化休息api测试。 blog.getpostman.com/index.php/2013/09/05/...
python
django
django-rest-framework
Elisa
Elisa
发布于 2015-06-29
6 个回答
Rahul Gupta
Rahul Gupta
发布于 2022-06-10
已采纳
0 人赞同

你错过了在标题部分添加 Content-Type 的标题。只要将 Content-Type 的标题设置为 application/json 就应该可以了。

请看下面的图片。

此外,你可能还需要在头中包括一个CSRF令牌,以备你在使用Postman进行 POST 请求时得到错误 {"detail": "CSRF Failed: CSRF token missing or incorrect."} 。在这种情况下,添加一个 X-CSRFToken 头,其值也是CSRF令牌值。

Khaled Al-Ansari
Khaled Al-Ansari
发布于 2022-06-10
0 人赞同

我发布这个答案是为了防止有人面临像我这样的问题。

我正在开发一个前端应用程序,使用的是 棱镜2 与一个用 Django Rest框架 而我以前发送的请求都带有以下标题。

'Content-Type': 'application/json'

它一直工作得很好,直到我试着把它放在Fire Fox我无法加载所需的数据,我通过添加以下头文件解决了这个问题

'Content-Type': 'application/json',
'Accept': 'application/json'

这里有一个解释。Content-Type告诉服务器数据的内容类型是什么,而Accept告诉它客户端将接受什么内容类型。

关于这个问题,这里有一个很好的明确答案。

https://webmasters.stackexchange.com/questions/31212/difference-between-the-accept-and-content-type-http-headers

Moe Far
Moe Far
发布于 2022-06-10
0 人赞同

You need to do two step to done this issue:

  • Add Content-Type header with application/json value
  • Add Authorization header with Token {YOUR_CUSTOM_TOKEN} value to pass CSRFToken
  • Note :如果你想用会话认证,你不需要做第二步,但如果你想在移动端使用这个API,你必须向服务器传递授权头。

    I hope it helps

    mariodev
    mariodev
    发布于 2022-06-10
    0 人赞同

    你需要通过设置适当的标头来定义内容类型。如果是Postman,你需要在url字段下设置以下值。

    头部。"内容-类型"

    值:application/json

    Harlin
    Harlin
    发布于 2022-06-10
    0 人赞同

    我不得不添加以下内容来使其工作(我在客户端使用node-fetch btw来做POST)。

    supportHeaderParams: true,
    headers: { "Content-Type": "application/json; charset=UTF-8" },
        
    kashaziz
    kashaziz
    发布于 2022-06-10
    0 人赞同

    如果你想使用Django Rest框架接受JSON数据,有几件事要做。

  • 请确保发送application/json头文件。 【替换代码0

  • settings.py 中选择JSON解析器

        REST_FRAMEWORK = {
    
  •