Bisher Schaffung Ich habe ->Überprüfen Sie, ob Benutzer vorhanden ist, bevor neue Benutzer djangorestframework
Serializer:
class UserSerializer(serializers.ModelSerializer):
"""Serializer to map the model instance into json format."""
class Meta:
"""Map this serializer to a model and their fields."""
model = User
fields = ('id','username', 'mobile', 'password',
'first_name','last_name','middle_name',
'profile_pic','short_bio','friends_privacy',
'address_1','address_2','city',
'state','country','pin','verification_code',
'is_active','is_blocked','is_reported',
'date_created','date_modified')
extra_kwargs = {'password': {'write_only': True}}
read_only_fields = (
'date_created', 'date_modified',
'is_staff', 'is_superuser', 'is_active',
'date_joined',)
def create(self, validated_data):
mobile_ = validated_data['mobile']
password_ = validated_data['password']
username_ = validated_data['username']
motp = self.context['request'].GET['motp']
eotp = self.context['request'].GET['eotp']
email_ = self.context['request'].GET['email']
mflag = api.views.checkOTP_(mobile_,motp)
eflag = api.views.checkOTP_(email_,eotp)
if (mflag and eflag):
user = User(
username=username_,
email =email_,
password = make_password(password_),
mobile = mobile_,
)
user.set_password(validated_data['password'])
user.save()
return user
Ansicht:
class UserView2(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
model = User
def get_permissions(self):
# allow non-authenticated user to create via POST
return (AllowAny() if self.request.method == 'POST'
else IsStaffOrTargetUser()),
Ich brauche für OTP von mobilen und E-Mail überprüfen und auch wenn ein Benutzer mit demselben Handy oder derselben E-Mail bereits existiert. Wenn der Benutzer bereits existiert, geben Sie eine JSON-Antwort mit dem folgenden Fehler zurück: already exists!
. Wenn der Benutzer neu ist und OTP falsch ist, wird ein Fehler ausgegeben. Wenn der Benutzer neu ist und OTP korrekt ist, erstellen Sie ein Konto.
Problem hier ist, habe ich versucht, die Funktion hinzuzufügen, um innerhalb der def create
of UserSerializer
für otp Überprüfung zu überprüfen. Ein Serializer soll jedoch die Modellinstanz zurückgeben. Aber wenn Sie den Code sehen, kann ich einen Benutzer nur erstellen, wenn OTP richtig ist und eine Benutzerinstanz zurückgegeben wird. Und es gibt keine else
.
Gibt es also eine bessere Möglichkeit, in der Ansicht selbst nach OTP zu suchen?
Wird dies nicht im Falle einer Aktualisierung stören, wenn das Feld nicht aktualisiert wird? –