<p>似乎您正在使用<a href="https://www.django-rest-framework.org/" rel="nofollow noreferrer">Django REST Framework</a>。如果是,请使用<a href="https://www.django-rest-framework.org/api-guide/serializers" rel="nofollow noreferrer">DRF Serializers</a>的<a href="https://www.django-rest-framework.org/api-guide/serializers/#field-level-validation" rel="nofollow noreferrer"><strong><em>field-level</em></strong>--DRF doc</a>验证,如下所示</p>
<pre><code># 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__'
</code></pre>
<p><strong>注意:</strong>您不需要重写<strong><code>post(...)</code></strong>类的<strong><code>CreateAPIView</code></strong>方法</p>