Я пытаюсь реализовать функцию входа в мое приложение 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
и текущую страницуне было изменений.