Как показать ошибку сериализатора в шаблонах Django

**I created a register page using the Django rest framework, now I write all validation code in serializers.py
and serializers.py in writing some errors but I can't see those errors in templates.**

в serializers.py напишите несколько валидаций, например, номер телефона, пароль и подтвердите, совпадает пароль или нет.

```
class PersonSerializer(serializers.ModelSerializer):
    GENDER_CHOICES = [
        ("male", "Male"),
        ("female", "Female"),
        ("other", "Other"),
    ]

    gender = serializers.ChoiceField(choices=GENDER_CHOICES)
    class Meta:
        model = Person
        fields = "__all__"

    def create(self, validated_data):
        gender = validated_data.pop("gender")
        validated_data["gender"] = gender.lower()
        return Person.objects.create(**validated_data)
    
    def validate(self, data: Union[str,int]) -> Union[str,int,None]:
        username = data.get("username")
        password = data.get("password")
        confirmpassword=data.get("confirmpassword")
        phone = data.get("phone")

        if Person.objects.filter(username=username).exists():
            raise serializers.ValidationError('Username is allready exists')
        if len(phone) != 10:
            raise serializers.ValidationError("phone number is not valid")
        if password != confirmpassword:
            raise serializers.ValidationError('password not match')
        return data

```

views.py В views.py я также проверяю, валиден сериализатор или нет. после этого не понимаю, как написать код для отображения ошибок в шаблонах. '''

class RegisterView(generics.CreateAPIView):
    serializer_class = PersonSerializer
    renderer_classes = [TemplateHTMLRenderer]
    template_name = "register.html"

    def get(self, request: Union[Request, HttpRequest]) -> Union[render, redirect]:
        if "username" in request.session:
            return redirect("home")
        serializer = PersonSerializer()
        return render(request, self.template_name, {"serializer": serializer})

    def post(self, request: Union[Request, HttpRequest]) -> Union[redirect, render]:
        serializer = PersonSerializer(data=request.data)
        if not serializer.is_valid(raise_exception=True):
            redirect("register")
        return redirect("login")
    
'''

    


I expect to show an error in the Templates and that error show with add CSS on that error
except ValidationError as e:
    error_message = str(e.detail['non_field_errors'][0])
    return Response({'error': error_message}, status=status.HTTP_400_BAD_REQUEST) 

Здравствуйте, чтобы получить сообщения об ошибках от сериализатора, вы можете поместить "except ValidationError as e" в ваше представление, тогда вы можете специально получить только сообщение и вернуть его в качестве ответа, так что вы можете отобразить эти сообщения в шаблоне

Вернуться на верх