Ожидаю получить "non_field_errors: Невозможно войти в систему с предоставленными учетными данными", но не получаем его

Ожидание: если предоставлены неверные учетные данные для входа, возвращается "non_field_errors: Unable to log in with provided credentials" возвращается, как показано ниже (скриншот из tutorial, которому я следую дословно)

enter image description here

Реальность: вместо этого я получаю ошибку ниже.

enter image description here

Это выводится на консоль:

POST http://127.0.0.1:8000/api/v1/token/login 400 (Плохой запрос)

Интересно, что я получаю ту же ошибку, когда пытаюсь создать пользователей со слишком короткими паролями. У меня нет никаких проблем с axios или сервером, когда я предоставляю правильные учетные данные для входа в систему или использую пароли достаточной длины при создании новых пользователей. При попытке отловить ошибки, подобные этим, я не получаю ожидаемого результата.

Мой код для перехвата ошибки такой же, как и в учебнике:

methods: {
    submitForm() {
        axios.defaults.headers.common['Authorization'] = ''
        localStorage.removeItem('token')

        const formData = {
            username: this.username,
            password: this.password
        }

        axios
            .post('/api/v1/token/login', formData)
            .then(response => {
                 const token = response.data.auth_token

                 this.$store.commit('setToken', token)

                 axios.defaults.headers.common['Authorization'] = 'Token ' + token

                 localStorage.setItem('token', token)

                 this.$router.push('/dashboard/my-account')
             })
             .catch(error => {
                 if (error.response) {
                     for (const property in error.response) {
                     this.errors.push(`${property}: ${error.response.data[property]}`)
                     }
                 } else if (error.message) {
                     this.errors.push('Something went wrong. Please try again!')
                 }
            })
        
    }
}

Есть ли что-то в настройках сервера, что я должен изменить? Я использую Django, rest framework и djoser.

Не знаю, используете ли вы пользовательский обработчик исключений в Django rest framework, но похоже, что проблема может быть связана с тем, как вы обрабатываете ошибку в вашем фронтенд-приложении. Вы можете обрабатывать ошибки следующим образом.

methods: {
    submitForm() {
        axios.defaults.headers.common['Authorization'] = ''
        localStorage.removeItem('token')

        const formData = {
            username: this.username,
            password: this.password
        }

        axios
            .post('/api/v1/token/login', formData)
            .then(response => {
                 const token = response.data.auth_token

                 this.$store.commit('setToken', token)

                 axios.defaults.headers.common['Authorization'] = 'Token ' + token

                 localStorage.setItem('token', token)

                 this.$router.push('/dashboard/my-account')
             })
             .catch(error => {
                 if (error.response) {
                 // The request was made and the server responded with a status code
                 // that falls out of the range of 2xx
                   console.log(error.response.data);
                   console.log(error.response.status);
                   console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
  })
           
}

Можно найти здесь

Вернуться на верх