0
votes

Comment puis-je appeler sa propre méthode dans les vues API basées sur Django

Je souhaite créer un compte à l'aide du numéro de téléphone comme nom d'utilisateur et générer du code OTP. Maintenant, je veux valider mon numéro de téléphone. Je crée une méthode is_phone_valid pour valider mon numéro de téléphone mais l'appelez par la méthode postale, mais je reçois une erreur image d'erreur Ceci est mon point de vue.py

class TempRegistration(models.Model):
    phone_number = models.CharField(max_length=45)
    otp_code = models.CharField(max_length=6)

    def __str__(self):
        return self.phone_number


2 commentaires

Téléphone_Number est dans les paramètres de poste?


Non, vous pouvez voir la méthode postale


4 Réponses :


0
votes

2 commentaires

je reçois TypeError is_phone_valid () prend 1 argument de position mais 2 ont été donnés


@Sajibhossain: Oui, vous auriez dû ajouter un auto ou l'a effectué un @StaticMethod .



0
votes

Vous devez définir la variable Phone_Number . J'espère que vous utilisez DRF, puis le paramètre phone_number sera disponible dans demande.data xxx


0 commentaires

1
votes

semble que vous utilisiez Django Reposework . Si oui, utilisez champ -level em> strong> - DOC DOC Validation de Sériorizers DRF , comme ci-dessous

# views.py
class GetPhoneNumber(CreateAPIView):
    queryset = TempRegistration.objects.all()
    serializer_class = AccountsSerializer


# serializers.py
class AccountsSerializer(serializers.ModelSerializer):
    def validate_phone_number(self, phone_number):
        MOBILE_REGEX = re.compile('^(?:\+?88)?01[15-9]\d{8}$')
        if MOBILE_REGEX.match(phone_number):
            return phone_number
        else:
            raise serializers.ValidationError('No. not matching')

    class Meta:
        model = TempRegistration
        fields = '__all__'


1 commentaires

Il ne peut pas valider le numéro de téléphone



0
votes

La trace de trace que vous avez affichée explique qu'il ne peut pas trouver le Téléphone_number Vous passez à auto.is_phone_valid (numéro_number) dans votre méthode postale.

Deuxièmement Votre question est de savoir comment appeler le is_phone_valid de l'intérieur de la classe? Vous devez faire passer auto comme premier arg de cette méthode. xxx


0 commentaires