Не удалось загрузить ресурс: сервер ответил со статусом 401 (неавторизованный) - react & django
Я столкнулся с проблемой в моей системе аутентификации, во время регистрации некоторые поля, такие как имя и фамилия, пароль и т.д., не сохраняются в базе данных, из-за чего попытки входа в систему возвращают ошибку 401, я также протестировал с помощью postman, и в предварительном просмотре он показывает неверные учетные данные. Я поместил инструкцию print в свой registerViewclass, чтобы проверить, все ли поля данных попадают в серверную часть, и это показывает, что они действительно попадают
class RegisterView(APIView):
permission_classes = [AllowAny]
def post(self, request):
print("Incoming Data from React:", request.data)
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
user = serializer.save()
return Response({"message": "User registered succefully"}, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Я попытался поиграть с моим классом register serializer, который, как я полагаю, может вызывать проблемы, просто для того, чтобы убедиться, что отсутствующие поля также могут быть сохранены в базе данных, но все равно не добился результатов
class RegisterSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [
'first_name', 'last_name', 'username', 'email', 'password', 'confirm_password', 'role',
'student_number', 'course_name', 'college',
'lecture_number', 'subject_taught', 'department'
]
extra_kwargs = {
'password': {'write_only': True},
'confirm_passwaord': {'write_only': True}
}
def validate(self, data):
if data['password'] != data['confirm_password']:
raise serializers.ValidationError({"password": "Passwords do not match."})
role = data.get('role')
if role == 'student':
if not all([data.get('student_number'), data.get('course_name'), data.get('college')]):
raise serializers.ValidationError(
{"student_info": "Students must provide student number, course name, and college."}
)
elif role == 'lecturer':
if not all([data.get('lecture_number'), data.get('subjects_taught'), data.get('department')]):
raise serializers.ValidationError(
{"lecturer_info": "Lecturers must provide lecturer number, subjects taught, and department."}
)
elif role == 'academic_registrar':
if not data.get('college'):
raise serializers.ValidationError(
{"academic_registrar_info": "Academic Registrars must belong to a college."}
)
elif role == 'admin':
if not data.get('college'):
raise serializers.ValidationError(
{"admin_info": "Administrators must be assigned to a college or the university."}
)
return data
def create(self, validated_data):
validated_data.pop('confirm_password') # Remove confirm_password before saving
# Ensure first_name & last_name are properly extracted
first_name = validated_data.pop('first_name', '')
last_name = validated_data.pop('last_name', '')
validated_data['password'] = make_password(validated_data['password']) # Hash the password
user = User.objects.create(**validated_data, first_name=first_name, last_name=last_name)
return user
Ребята, пожалуйста, помогите, если можете