【问题标题】:Django Post request not receiving dataDjango Post请求未收到数据
【发布时间】:2018-07-23 07:28:21
【问题描述】:

我已经花了几个小时查找这个问题,但无济于事。

我在发送 {'username': 'username'} 的 html 页面中发布数据时遇到问题,但是当我执行 request.POST.get('username') 时它没有返回,我也尝试过 {username, 'username'}

def test_post(request):
    if request.method == 'POST':
        print(request.POST.get('username'))
        return HttpResponse("Good!")
    else:
        return HttpResponse("Bad.")

控制台开发服务器

None <<<<

[12/Feb/2018 19:39:53] "POST /test_post HTTP/1.1" 200 5
(edited)

我将数据发送为{'username': 'username'} 可以正常使用,为什么我无法显示?

这是从页面调用的 Javascript 代码:

document.getElementById('submit').addEventListener('click', function(e) {
    e.preventDefault();
   var username = document.getElementById("username").value;

   data = {username: username};
   console.log(data);
   var request = new XMLHttpRequest();
   request.open('POST', '/getuser', true);
   request.setRequestHeader('Content-Type', 'x-www-form-urlencoded');
   request.send(data);
});

【问题讨论】:

  • 您在 js 中将其称为 gitusername,在 django 中称为 username,不是吗?
  • 这是一个错误对不起他们都被称为用户名

标签: json django post


【解决方案1】:

在 django 视图 test_post 中,request.POST 是一个查询字典(又名字典)。

当您使用.get(key)方法时,它会在字典中查找key,并返回与该键对应的值。

test_post 方法中,您编写了request.POST.get('username'),这意味着字符串'username' 作为键应该出现在POST 字典中。


当您使用 Javascript 执行 POST 并执行 data = {username: username}; 时,您实际上是在使密钥动态化。

例如。当您在用户名中输入“Bob”并单击提交时,变量data 将是{'Bob': 'Bob'}

你应该这样做:

 data = {'username': username}        //This ensures that the key remains same

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 2014-03-15
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多