Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django rest框架simple jwt中使用自定义模型用户_Python_Django_Django Rest Framework_Django Rest Framework Jwt_Django Rest Framework Simplejwt - Fatal编程技术网

Python 如何在django rest框架simple jwt中使用自定义模型用户

Python 如何在django rest框架simple jwt中使用自定义模型用户,python,django,django-rest-framework,django-rest-framework-jwt,django-rest-framework-simplejwt,Python,Django,Django Rest Framework,Django Rest Framework Jwt,Django Rest Framework Simplejwt,SimpleJWT目前使用超级用户发布令牌,但我想使用我的自定义用户模型。(我定义的自定义用户模型如下。) 类用户(models.Model): id=models.AutoField(主键=True) name=models.CharField(max_length=10,unique=True,blank=False) 密码=models.CharField(最大长度=128) 定义报告(自我): 返回自我__ 类UsersSerializer(serializers.ModelSerial

SimpleJWT目前使用超级用户发布令牌,但我想使用我的自定义用户模型。(我定义的自定义用户模型如下。)

类用户(models.Model):
id=models.AutoField(主键=True)
name=models.CharField(max_length=10,unique=True,blank=False)
密码=models.CharField(最大长度=128)
定义报告(自我):
返回自我__
类UsersSerializer(serializers.ModelSerializer):
类元:
模型=用户
字段=(“名称”、“密码”)
我的问题是,我可以在SimpleJWT上使用自定义用户模型接收令牌吗


如果simple jwt使用自定义用户模型,请告诉我如何使用自定义用户模型。

这对我很有用,请尝试 假设您正确安装了djangorestframework\u simplejwt

只需将此粘贴在您的 设置.py

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'users.serializers.UserSerializer',
}
class UserSerializer(serializer.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = []
        read_only_fields = ( ,)
这里UserSerializer使用CustomUserModel,即。 序列化程序.py

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'users.serializers.UserSerializer',
}
class UserSerializer(serializer.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = []
        read_only_fields = ( ,)
并添加序列化程序,该序列化程序覆盖TokenGetPairView的默认序列化程序验证方法

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer


class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
       # The default result (access/refresh tokens)
       data = super().validate(attrs)
       refresh = self.get_token(self.user)

       # assign token 
       data['refresh'] = str(refresh)
       data['access'] = str(refresh.access_token)

       # extra fields
       data['age'] = self.user.age
       return data
借助于此,我在调用登录端点时获得了定制用户的“年龄”模型字段。

在视图类中使用此序列化程序,然后调用此视图的url 调用此url后

返回的数据如下:

{
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..............",
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...............",
"username": "Shubham",
"id": 4,
"age": 100,
"description": "Slow shubham gadwal mehra try to understand."

}

这对我很有效,试试看 假设您正确安装了djangorestframework\u simplejwt

只需将此粘贴在您的 设置.py

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'users.serializers.UserSerializer',
}
class UserSerializer(serializer.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = []
        read_only_fields = ( ,)
这里UserSerializer使用CustomUserModel,即。 序列化程序.py

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'users.serializers.UserSerializer',
}
class UserSerializer(serializer.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = []
        read_only_fields = ( ,)
并添加序列化程序,该序列化程序覆盖TokenGetPairView的默认序列化程序验证方法

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer


class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
       # The default result (access/refresh tokens)
       data = super().validate(attrs)
       refresh = self.get_token(self.user)

       # assign token 
       data['refresh'] = str(refresh)
       data['access'] = str(refresh.access_token)

       # extra fields
       data['age'] = self.user.age
       return data
借助于此,我在调用登录端点时获得了定制用户的“年龄”模型字段。

在视图类中使用此序列化程序,然后调用此视图的url 调用此url后

返回的数据如下:

{
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..............",
"access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...............",
"username": "Shubham",
"id": 4,
"age": 100,
"description": "Slow shubham gadwal mehra try to understand."
}