我是django的新手。我正在创建一个将用户数据发布到Django服务器的简单应用程序。但是我遇到了关于queryDict的问题。它是空的。代码是:
@csrf_exempt
def create_user(request):
"""
This function creates users
:param request: post request from front-end
:return: success/failure
"""
if request.method == 'POST':
#x = json.loads(request.POST)
print(request.POST)
return JSONResponse(request.POST)
POST请求是:
function post(){
xmlhttp = new XMLHttpRequest();
var url = "http://127.0.0.1:8000/create_user/";
xmlhttp.open("POST", url, true);
//xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.onreadystatechange = function () { //Call a function when the state changes.
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
var parameters = {
"username": "myname",
"password": "mypass"
};
xmlhttp.send(JSON.stringify(parameters));
}
答案 0 :(得分:10)
您正在请求正文中发送数据:
xmlhttp.send(JSON.stringify(parameters));
此数据最终会以request.body
。
这与发布HTML表单不同,因此它不会以request.POST
结尾。如果要模拟HTML表单POST,请参阅this answer。
答案 1 :(得分:5)
您的JSON对象应隐藏在request.body
中,以便您可以访问该对象的属性:
request.body["username"]
request.body["password"]
答案 2 :(得分:0)
迟到这里,但让我也发表一下看法。 您的数据将进入正文。但是根据您的python版本,访问它的方法会有所不同。 因为主体数据在Python3 +中将以字节形式出现,而在Python2.7中将以字符串形式出现 因此,您必须记住如何访问它
Python3
form_data = json.loads(request.body.decode())
Python2.7
form_data = json.loads(request.body)