queryDict在Django中为空
Empty queryDict in Django
我是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));
}
您正在发送请求正文中的数据:
xmlhttp.send(JSON.stringify(parameters));
该数据最终将在request.body
.
这与post HTML表单不一样,所以它不会在request.POST
中结束。如果您想模拟HTML表单POST,请参阅此答案。
你的JSON对象应该隐藏在request.body
中,这样你就可以访问对象的属性:
request.body["username"]
request.body["password"]
来晚了,但我也要发表一下我的看法。你的数据会进入身体。但是根据您的python版本,访问它的方法会有所不同。因为主体数据在Python3+中以字节的形式出现,在Python2.7中以字符串的形式出现所以你要记住如何访问它
Python3
form_data = json.loads(request.body.decode())
Python2.7
form_data = json.loads(request.body)
相关文章:
- 在javascript点击事件中调用django-urls
- Django: AJAX + CSRF POST gives 403
- 我的django模板布尔变量是't在javascript中按预期工作
- django模板没有在AJAX发布后重新加载
- jsi18n-django.catogue没有'不包含任何已翻译的字符串(但是djangojs.mo包含)
- 设计Django中当前导航菜单项的样式
- Django可以'不能在设置中导入ckeditor,但可以在shell中导入
- 如何在不使用ajax的情况下将pair值添加到数组并发送到django中的视图
- Django'支持Javascript文件中的翻译
- Django导航:扩展与innerHTML
- 为什么datetime.strptime在使用Django运行时会抛出错误
- django出现神秘的javascript错误
- 如何从django中的url解析javascript字符串
- Django在使用AJAX时没有接收到新的查询字符串
- django没有访问控制允许删除原始标头
- AJAX在Django的外部JS文件中发布
- 从Django中同一页面上的多个按钮启动AJAX请求
- Django:从QueryDict读取JSON对象数组
- queryDict在Django中为空
- 从Form中保留QueryDict中的特殊字符(Django)