Ionic 3发送http post请求作为application / x-www-form-urlencoded到Django后端

时间:2017-12-09 07:53:08

标签: django angular ionic3

我试图用Ionic 3作为前端应用程序向我的Django后端发出post请求。现在我的post方法看起来像这样:

register(username, password, email, first_name, last_name) {
    let url = "https://www.example.com/api/create_user/";
    let headers = new Headers();
    headers.append("Content-Type", "application/x-www-form-urlencoded");

    return this.http.post(url,
      {"first_name": first_name,
      "last_name": last_name,
      "email": email,
      "username": username,
      "password": password},
      {headers: headers})
      .map(res => res.json());
  }

但是Django正在接收它: <QueryDict: {'{\n "first_name": "bob",\n "last_name": "bob",\n "email": "bob@bob.bob",\n "username": "bob",\n "password": "bob"\n}': ['']}> 并将JSON对象更改为字符串。我想在我的前端正确发送表单数据,所以我不必对我的Django后端进行简单的修复。我尝试在标题中添加transformRequest,但这会触发预检响应,因为内容类型会被删除或自动更改为未定义。如何更改此设置以正确发送表单数据,以便QueryDict不会搞砸?

1 个答案:

答案 0 :(得分:0)

所以我意识到我问的是错误的问题。将请求保留在离子应用程序中更容易application/json,然后在Django端在post请求发送到的视图上实现JSON的解析器,如下所示:< / p>

from rest_framework.decorators import parser_classes
from rest_framework.parsers import JSONParser

@parser_classes((JSONParser,))
def some_view:
    # View code here