Как показать ошибку сериализатора в шаблонах 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" в ваше представление, тогда вы можете специально получить только сообщение и вернуть его в качестве ответа, так что вы можете отобразить эти сообщения в шаблоне