Почтовый запрос в Джанго приводит к поломке трубы - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь отправить запрос с сайта реакции на сервер Django, чтобы войти в систему и перенаправить на новую страницу. У меня проблема в том, что, несмотря на то, что запрос достигает сервера, и я могу получить данные, когда приходит время для перенаправления django, перенаправление не происходит, и они выводятся в консоли с сообщением «Сломанный канал от ( «127.0.0.1», 64989) ». Я провел некоторые исследования в Интернете по этому вопросу, но я до сих пор не могу понять, как это исправить. Тем не менее, все работает нормально, когда я использую HTML-элемент формы с типом действия и метода. Ниже я поделился своим кодом.

React Frontend

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 Backend

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')

Следующие работы, но это не то, что я хочу

С помощью этого метода я могу получить данные из полей ввода (здесь не показано) аутентифицируйте пользователя и перенаправьте его правильно. Однако я не хочу используйте этот метод, потому что я хочу передать все сообщения об ошибках в вызываемую submitFunction () или обработать любые другие данные на той же странице, где был выполнен вызов.

<form method="POST" action={ENDPOINT}>
                    <input
                        type="hidden"
                        name="csrfmiddlewaretoken"
                        value={csrftoken}
                        />
                     ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...