DRF SimpleJWT 删除密码并添加日期字段
DRF SimpleJWT remove password and add date field
我创建了一个从 AbstractBaseUser 扩展的自定义用户模型,其中我从用户那里获得的唯一数据是用户 ID、用户(用户名字段)和日期(必需且格式为 dd- mm-yyyy) 并且用户的创建工作正常,您可以从下图中的数据库中看到
使用 password = None
和 last_login = None
来引用我不想要密码和 last_login 表。
然后,创建了一个只有经过身份验证的用户才能访问的视图。
为了处理身份验证,使用了 simpleJWT。在 urls.py
# JWT Token
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain'),
# Get a new token before the old expires.
path('api/token/refresh/', TokenRefreshView.as_view, name='token_refresh'),
然后转到 http://127.0.0.1:8000/api/token/ ,这就是我所看到的(按预期工作)
我之前在另一个项目中使用用户和密码进行过测试,该项目具有包含该数据(用户和密码)的用户模型并且工作正常。现在,在这里,如果我尝试使用现有用户 Posting 但没有密码,我会收到警告并且无法 Post
This field may not be blank.
如果我添加除空白以外的任何内容 space,则会出现以下错误
TypeError at /api/token/
object of type 'NoneType' has no len()
如何删除密码字段?另外,我怎样才能添加日期字段?
我也遇到了同样的问题,不知何故我设法解决了这个问题。
这是解决方案,
覆盖 TokenObtainPairSerializer
class __init__
方法,如下所示,
使用del password
这样它就不会询问您密码并添加您想要的任何字段。
class CustomSerializer(TokenObtainPairSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields[self.username_field] = serializers.CharField()
del self.fields['password']
self.fields['last_login'] = serializers.DateField(initial=datetime.date.today)
这个效果很好。
这里是参考 - How to skip or remove password field in simplejwt token authentication in django rest framework??
如果有人对此有更好的解决方案,请告诉我。
我创建了一个从 AbstractBaseUser 扩展的自定义用户模型,其中我从用户那里获得的唯一数据是用户 ID、用户(用户名字段)和日期(必需且格式为 dd- mm-yyyy) 并且用户的创建工作正常,您可以从下图中的数据库中看到
使用 password = None
和 last_login = None
来引用我不想要密码和 last_login 表。
然后,创建了一个只有经过身份验证的用户才能访问的视图。
为了处理身份验证,使用了 simpleJWT。在 urls.py
# JWT Token
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain'),
# Get a new token before the old expires.
path('api/token/refresh/', TokenRefreshView.as_view, name='token_refresh'),
然后转到 http://127.0.0.1:8000/api/token/ ,这就是我所看到的(按预期工作)
我之前在另一个项目中使用用户和密码进行过测试,该项目具有包含该数据(用户和密码)的用户模型并且工作正常。现在,在这里,如果我尝试使用现有用户 Posting 但没有密码,我会收到警告并且无法 Post
This field may not be blank.
如果我添加除空白以外的任何内容 space,则会出现以下错误
TypeError at /api/token/ object of type 'NoneType' has no len()
如何删除密码字段?另外,我怎样才能添加日期字段?
我也遇到了同样的问题,不知何故我设法解决了这个问题。
这是解决方案,
覆盖
TokenObtainPairSerializer
class__init__
方法,如下所示,使用
del password
这样它就不会询问您密码并添加您想要的任何字段。
class CustomSerializer(TokenObtainPairSerializer):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields[self.username_field] = serializers.CharField()
del self.fields['password']
self.fields['last_login'] = serializers.DateField(initial=datetime.date.today)
这个效果很好。
这里是参考 - How to skip or remove password field in simplejwt token authentication in django rest framework??
如果有人对此有更好的解决方案,请告诉我。