Как установить статус ответа Django и сообщение об ошибке и отобразить его с AngularJS - PullRequest
0 голосов
/ 18 мая 2019

AngularJS выдает сообщение об ошибке пользователю, основываясь именно на том, что происходит

Мой API построен на Django Rest Framework.

В моей базе данных только четыре поля.userid, name, email, phone

Я пишу ниже этого фрагмента, и он отлично справляется с ошибками и успехами:

$scope.formModel = {}; // It will post data and handle both success and error, 
  $scope.onSubmit = function () {
      $http.post('http://127.0.0.1:8000/api/v1/contact/', $scope.formModel)
      .then(function(response){
        $scope.successPost = 'You have successfully submitted your Contact';
        $timeout(function(){
          $scope.successPost = '';
        },4000);
        $scope.contacts.push(response.data);

      }, function(response){
        $scope.errorPost = 'Ooops! It seems Your Submitted User ID or Phone Number or Email are already exist, please try again with different data';
        $timeout(function(){
          $scope.errorPost = '';
        },10000);
      });
      $scope.formModel = {};
      $scope.addContactForm.$setPristine();
  };

Мой бэкэнд не позволит публиковать дубликаты, например, еслиномер телефона существует в базе данных, во второй раз, пользователь не может опубликовать это, если они пытаются попытаться опубликовать номер телефона, который уже существует, я хочу показать им сообщение, что "Ваш представленный номер телефона уже существует" Аналогичным образом, если он попытается отправить электронное письмо, которое уже существует, я хочу показать ему сообщение типа "Ваше отправленное электронное письмо уже существует"

В настоящее время мой фрагмент работает, как если бы он могопубликовать сообщение успешно, он получает сообщение об успехе, и если возникает ошибка, он получает сообщение об ошибке, но я хочу показать, что именно произошло и почему не принято.

1 Ответ

0 голосов
/ 18 мая 2019

Я бы посмотрел на конкретную ошибку, которая возвращается в ответе, затем на основании этого сообщения я бы отобразил соответствующее сообщение. Если сервер не возвращает разные сообщения, я бы сначала исправил эту проблему. Если вы не можете этого сделать, вам может понадобиться реализовать больше логики на стороне клиента, например, посмотреть, существует ли какое-либо из значений до того, как пользователь заполнит форму и сделает их доступными только для чтения или аналогичными.

function(response){
    //could use case statements too instead of if statements.
    if(response.cantRememberVarName == "user id already exists"){
      $scope.errorPost = "Ooops User Id already exists";
    }
    if(response.cantRemberVarName == "phone number already exists"){
      ....
    }
    $scope.errorPost = 'Ooops! It seems Your Submitted User ID or Phone Number or Email are already exist, please try again with different data';
    $timeout(function(){
      $scope.errorPost = '';
    },10000);
  });
...