我正在使用django Django = 2.1.7和rest框架djangorestframework = 3.9.2这是我的登录网址
path('rest-auth/login', include('rest_auth.urls')),
当我输入用户名和密码时,我从rest API获得了令牌。但是我希望我的用户详细信息(例如名称,ID等)显示在我的React组件中。请帮助我如何实现。即使官方文档不是描述性的https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
,我在StackOverflow上也看到了很多答案。答案 0 :(得分:1)
所提到的软件包使我们能够override the settings
在登录过程中,响应来自 TOKEN_SERIALIZER
或 JWT_SERIALIZER
。就您而言,我假设您没有使用 JWT 方法。
因此,请根据您想要的结构创建一个新的序列化器类,并使用 REST_AUTH_SERIALIZERS
设置字典将其连接起来。
这是一个示例
#serializer.py
from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.authtoken.models import Token
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ('id', 'username', 'email')
class MyCustomTokenSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
class Meta:
model = Token
fields = ('key', 'user')
,然后在您的 settings.py
中,
REST_AUTH_SERIALIZERS = {
'TOKEN_SERIALIZER': 'path.to.custom.MyCustomTokenSerializer',
...
...
}
答案 1 :(得分:1)
如果您使用rest-auth,则可以使用以下URL获取登录用户的ID,用户名,电子邮件,名字和姓氏:http://localhost:8000/rest-auth/user/
答案 2 :(得分:-1)
一旦用户登录,便无法自动填充用户数据。您应该只能够采用用户在登录过程中输入的用户名,将其保存在变量中,并在收到令牌后进行另一个API调用。获取用户信息。