Comment créer un nouvel utilisateur avec django repos cadre et personnalisé de l'utilisateur modèle
J'ai un utilisateur personnalisée modèle et je suis en utilisant django-repos-cadre pour créer des API
models.py:
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
unique=True,
max_length=254,
)
first_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=15)
mobile = models.IntegerField(unique=True)
date_joined = models.DateTimeField(default=timezone.now)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
serializers.py:
class UserSerializer(serializers.ModelSerializer):
password1 = serializers.CharField(write_only=True)
password2 = serializers.CharField(write_only=True)
class Meta:
model = User
fields = ('first_name', 'last_name', 'email', 'mobile', 'password1', 'password2')
views.py:
@api_view(['POST'])
@permission_classes((AllowAny,))
def create_user(request):
serialized = UserSerializer(data=request.data)
if serialized.is_valid():
User.objects.create_user(
serialized.save()
)
return Response(serialized.data, status=status.HTTP_201_CREATED)
else:
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
Cependant, lorsque j'essaie de créer un nouvel utilisateur, j'obtiens cette erreur:
Obtenu un
TypeError
lors de l'appel deUser.objects.create()
. Cela peut être parce que vous avez un domaine accessible en écriture sur le sérialiseur classe qui n'est pas un argument valable pourUser.objects.create()
. Vous devrez peut-être faire le champ en lecture seule, ou de remplacer le UserSerializer.méthode create() pour gérer cela correctement.
Ce peut-être parce qu'il n'y a pas password1 ou mot_passe2 champs dans le modèle de l'Utilisateur. Mais alors, comment puis-je créer une API pour créer un nouvel utilisateur à l'aide de django-repos-cadre?
OriginalL'auteur Aamu | 2017-03-26
Vous devez vous connecter pour publier un commentaire.
Je pense que l'un champ de mot de passe est assez. Si vous voulez vérifier si l'utilisateur est deux fois le mot de passe d'entrée est le même, le faire dans le front-end. Vous pouvez remplacer un
create
méthode de sérialiseur comme suit.views.py
OriginalL'auteur Xiao
Dans model.py:
Dans views.py
de rest_framework importer des génériques
OriginalL'auteur Asad Manzoor