【问题标题】:Why request.POST.get always empty in Django when using with react?为什么在使用 react 时 request.POST.get 在 Django 中总是为空?
【发布时间】:2021-12-02 23:30:45
【问题描述】:

我使用的是 Django 框架而不是 Django REST 框架的 react,当我从 react 端发送 post 请求时,request.POST.get('token', '') 始终为空。

token = request.POST.get("token")

我尝试了很多方法,例如 changing content type 使用 request.data,但没有任何效果。

谁能告诉我为什么我没有得到 post 变量?

编辑 这是用于发送 post 请求的 js 代码。

      axios({
        method: 'post',
        responseType: 'json',
        url: `/auth/login/`,
        data: {
          'token':token,
          'username':'yesy'
        },
        headers:{
          'X-CSRFToken':csrf,
          "Content-Type": "application/x-www-form-urlencoded",
        }
      })
      .then((response:any) => {
        console.log(response)
      })
      .catch((error:any) => {
        //error.data.error.message
        console.log(error)
      });

【问题讨论】:

  • 您能分享您的发帖请求代码吗?
  • @Daniel 刚刚进行了编辑,请参阅。
  • 但是key的名字是id_token,所以你用request.POST['id_token']获取它
  • @WillemVanOnsem 对不起,这是一个错字。但我已经编辑了代码。
  • 但我想我需要在请求中发送多部分表单数据,但我猜它是 json。可能是如果我发送多部分表单数据它可以工作,但不知道如何使它工作?我试过“Content-Type”:“multipart/form-data”,但这也没有用

标签: reactjs django axios


【解决方案1】:

经过一番头疼后,我设法找到了答案,如果有人偶然发现这个问题,那么只需将FormData 与 multipart 一起使用。

      const formData = new FormData();
      formData.append('token', token);
      axios({
        method: 'post',
        responseType: 'json',
        url: `/auth/login/`,
        data: formData,
        headers:{
          'X-CSRFToken':csrf,
          "Content-Type": "multipart/form-data",
        }
      })
      .then((response:any) => {
        console.log(response)
      })
      .catch((error:any) => {
        //error.data.error.message
        console.log(error)
      });

这解决了我的问题,因此也可能解决其他问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2013-04-17
    • 2019-08-04
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多