从文档中不清楚,但我想实现两件事:
-
使用从模型继承的自定义用户模型。型。
-
它有一个密码字段,该字段使用sha1存储密码。我需要使用该密码字段的模型进行身份验证。
由于这些表是按项目中使用的,因此需要仅使用这些表。
我需要使用任何基于令牌的身份验证。
有人可以指出正确的方向吗?我阅读了django-rest-framework文档,它指出使用Djoser进行自定义用户模型。但我无法弄清楚这一点。如何。
创建自定义用户模型继承自模型。模型是一个非常糟糕的主意,而是使用AbstractUser或AbstractBaseUser。
创建自定义后,您已在settings.py
中将AUTH_USER_MODEL
设置为您的用户模型。
然后只需导入 Djoser 用户注册序列化程序并覆盖它。
from djoser.serializers import UserCreateSerializer as BaseUserRegistrationSerializer
class UserRegistrationSerializer(BaseUserRegistrationSerializer):
class Meta(BaseUserRegistrationSerializer.Meta):
fields = ('city', 'state', 'email', 'name', 'last_name', 'account_address', 'password', )
您还可以重写序列化程序中的其他内容,例如创建和更新方法,以防您想要自定义它。
在 settings.py 告诉djoser这样使用它
DJOSER = {
...
'SERIALIZERS': {
'user_create': 'yourapp.serializer.UserRegistrationSerializer'
}
...
}
不应创建自定义用户继承models.Model
而应使用AbstractUser
以下是相关文档。
如果你遵循Django文档,Djoser应该可以毫无问题地工作。
Djoser 和许多其他与身份验证相关的软件包使用AbstractUser
提供的功能
您可以使用 JWT 令牌身份验证。 http://getblimp.github.io/django-rest-framework-jwt/。如果在设置文件中将AUTH_USER_MODEL设置为自定义用户模型,则它将验证用户。或者,您可以编写用于身份验证的自定义方法。