Python 创建&;序列化程序中的返回标记
当前在我的注册视图中返回令牌时遇到困难 如何修复此问题,以便UserSerializer的create可以返回令牌和用户名 View.pyPython 创建&;序列化程序中的返回标记,python,django,Python,Django,当前在我的注册视图中返回令牌时遇到困难 如何修复此问题,以便UserSerializer的create可以返回令牌和用户名 View.py @permission_classes([AllowAny]) class UserCreate(generics.CreateAPIView): queryset = User.objects.all() serializer_class = UserSerializer 序列化程序.py class UserSerializer(ser
@permission_classes([AllowAny])
class UserCreate(generics.CreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
序列化程序.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password')
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
password = validated_data.pop('password')
user = User(**validated_data)
user.set_password(password)
user.save()
token, _ = Token.objects.get_or_create(user=user)
return Response(
{
'username': validated_data['username'],
'token': token.key,
},
status=HTTP_200_OK
)
错误
最终将其放入序列化程序:
class UserCreate(generics.CreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
token, created = Token.objects.get_or_create(user=serializer.instance)
return Response({'token': token.key, 'username': serializer.instance.username}, status=HTTP_201_CREATED)```
错误显示数据中缺少
username
。这是我的请求:httpposthttp://127.0.0.1:8000/account/register username='test37'password='password'
将打印(已验证的\u数据)
放入序列化程序中,查看是否包含所有必需的字段。{“username”:“test40”}
class UserCreate(generics.CreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
token, created = Token.objects.get_or_create(user=serializer.instance)
return Response({'token': token.key, 'username': serializer.instance.username}, status=HTTP_201_CREATED)```