在Django中发布请求导致管道中断

时间:2018-11-10 20:45:32

标签: django reactjs axios

我正在尝试从react前端向django后端发出发布请求以登录用户,然后重定向到新页面。我遇到的问题是,即使请求到达服务器,并且在进行django重定向的时候也可以获取数据,但是重定向不会发生,它们是控制台中的输出,内容为“( '127.0.0.1',64989)”。我已经在网上做了一些有关此问题的研究,但是我仍然不知道如何解决它。但是,当我使用具有动作和方法类型的html表单元素时,一切工作正常。下面,我分享了我的代码。

反应前端

handleSubmit = () => {
      let csrfToken = Cookies.get('csrftoken')
      let endpoint = this.state.isLoggingIn ? LOGIN_ENDPOINT : REGISTER_ENDPOINT;
      axios({
          url: endpoint,
          method: "POST",
          data: {
              username: this.state.username,
              password: this.state.password,
              displayName: this.state.displayName,
          },
          headers: {"X-CSRFToken": csrfToken},
          responseType: "json",
      }).then(function (response) {
          console.log(response);
      }).catch(function (error) {
          console.log(error);
      });
    }

Django后端

def login_view(request):
    if request.method == 'POST':
        #username = request.POST.get('username') <= I use this and below, to get data sent via a form with an action and method set.
        #password = request.POST.get('password')
        body_unicode = request.body.decode('utf-8')
        data = simplejson.loads(body_unicode)
        username = data['username']
        password = data['password']
        user = authenticate(username=username, password=password)
        print user
        if user is not None and user.is_active:
            login(request, user)
            return redirect('chat_app:chat')
        else:
            return JsonResponse({'message': 'Check you username or password'})
    else:
        return render(request, 'frontend/chat_app/home.html')

以下方法有效,但不是我想要的

使用这种方法,我可以从输入字段中获取数据(此处未显示) 验证用户身份并正确重定向他们。但是,我不想 之所以使用此方法,是因为我想将所有错误消息传回进行调用的同一页面中已被调用的commitFunction()或处理任何其他数据。

<form method="POST" action={ENDPOINT}>
                    <input
                        type="hidden"
                        name="csrfmiddlewaretoken"
                        value={csrftoken}
                        />
                     ....

0 个答案:

没有答案