我试图用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
不会搞砸?
答案 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