一百零二
in serializers.py write some validation like phone number, and password and confirm password is a match or not.
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")
我希望在模板中显示一个错误,该错误显示与添加CSS上的错误.