Как исправить код состояния `Forbidden` в приложении Django Rest Framework - PullRequest
1 голос
/ 16 апреля 2019

Я пытаюсь реализовать функцию входа в мое приложение Django Rest Framework.Я столкнулся с проблемой, что DRF возвращает код состояния «Запрещено», даже если представление открыто для всех.

Я добавил декораторы @api_view и @permission_classes и попытался изменить их порядок

/ breakdown / views.py

@api_view(['GET', 'POST', ])
@permission_classes((permissions.AllowAny,))
def sign_in(request):
    body_unicode = request.body.decode('utf-8')
    body = json.loads(body_unicode)
    username = body['username']
    password = body['password']
    print(username, password)

    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            res = JsonResponse({"data": "1"})
            return Response("Success", status=HTTP_STATUS_OK)
        else:
            print("Error. Disabled account")
            return Response("Disabled account", status=410)
    else:
        print("invalid login")
        return Response("Invalid login", status=400)

breakdown / urls.py

urlpatterns = [
    path('user/surveys', survey.get_list_of_surveys),
    path('users/authenticate', sign_in),
]

src / _services / user.sevice.js

function login(username, password) {
  const requestOptions = {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({username, password})
  };
  console.log(requestOptions);
  return fetch(`http://127.0.0.1:8000/users/authenticate`, requestOptions)
    .then(handleResponse)
    .then(user => {
      if (user.token) {
        localStorage.setItem('user', JSON.stringify(user));
      }
      return user;
    });
}

ссылка на GitHub : https://github.com/Jlo6CTEP/students_breakdown/tree/mir_trud_may

Я должен был перенаправить на главную страницу, на которой было получено сообщение Forbidden и текущую страницуне было изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...