gpt4 book ai didi

python - 我如何在基于 django 类的 api View 中调用自己的方法

转载 作者:行者123 更新时间:2023-12-01 06:34:41 24 4
gpt4 key购买 nike

我想使用电话号码作为用户名创建帐户并生成 otp 代码。现在我想验证我的电话号码。我创建了一个方法 is_phone_valid 来验证我的电话号码,但通过 post 方法调用它,但我收到错误 error image这是我的观点.py

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

def is_phone_valid(phone_number):
if phone_number:
MOBILE_REGEX = re.compile('^(?:\+?88)?01[15-9]\d{8}$')
if MOBILE_REGEX.match(phone_number):
return True
else:
return False
else:
return False

def post(self, request, *args, **kwargs):
return self.is_phone_valid(phone_number)

模型.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

最佳答案

似乎您正在使用 Django REST Framework 。如果是这样,请使用 field-level--DRF doc验证DRF Serializers ,如下

# 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__'

注意:您不需要重写CreateAPIView<的post(...)方法 类。

关于python - 我如何在基于 django 类的 api View 中调用自己的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59732639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com