Django Next.js обработка ответов при регистрации
Я создаю свое первое приложение Django + Next.js и хочу вывести предупреждение при регистрации пользователя, если имя пользователя или email уже существует.
В настоящее время, если пользователь выбирает имя пользователя/электронную почту, которая уже существует, возникает ошибка 400 (то, что я хочу), в противном случае все работает нормально. Когда я пробую это на postman, я получаю явную проблему (имя пользователя уже существует или email уже существует). Но мне не удалось добиться этого на моем фронтенде, даже в консоли я не вижу никакого сообщения.
RegisterView :
class RegisterView(APIView):
permission_classes = (permissions.AllowAny, )
def post(self, request):
try:
data = request.data
email = data['email']
username = data['username']
password = data['password']
re_password = data['re_password']
if password == re_password:
if len(password) >= 8:
if not User.objects.filter(username=username).exists():
if not User.objects.filter(email=email).exists():
user = User.objects.create_user(
email=email,
username=username,
password=password,
)
user.save()
if User.objects.filter(username=username).exists():
return Response(
{'message': 'Account created successfully'},
status=status.HTTP_201_CREATED)
else:
return Response(
{'message': 'Something went wrong when trying to create account'},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
else:
return Response(
{'message': 'Account with this email already exists'},
status=status.HTTP_400_BAD_REQUEST,)
else:
return Response(
{'message': 'Username already exists'},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(
{'message': 'Password must be at least 8 characters in length'},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(
{'message': 'Passwords do not match'},
status=status.HTTP_400_BAD_REQUEST)
except:
return Response(
{'message': 'Something went wrong when trying to register account'},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Auth.js
export const register = (
email,
username,
password,
re_password
) => async dispatch => {
const body = JSON.stringify({
email,
username,
password,
re_password});
try {
const res = await fetch(`${API_URL}/api/account/register`, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: body
});
if (res.status === 201) {
console.log(res)
dispatch({type: REGISTER_SUCCESS});
} else {
console.log(res)
dispatch({type: REGISTER_FAIL});
}
} catch(err) {
dispatch({type: REGISTER_FAIL});
alert('Test');
}
И вот что я получаю в консоли. В этом случае я хотел бы иметь "message" : "Имя пользователя уже существует"
Как мне это сделать?
