登录`rest-auth`后,如何return获取更多信息?
After login the `rest-auth`, how to return more information?
我在我的 Django 项目中使用 django-rest-auth
。
登录rest-auth/login/
后,如何return获取更多信息?
在 rest-auth/login/
中,当我登录用户时,它 return 是 key
。
我也想return用户的信息,请问如何获取?
最后,我得到了我的解决方案:
class TokenSerializer(serializers.ModelSerializer):
"""
Serializer for Token model.
"""
user = UserInfoSerializer(many=False, read_only=True) # this is add by myself.
class Meta:
model = TokenModel
fields = ('key', 'user') # there I add the `user` field ( this is my need data ).
在项目 settings.py
中,添加 TOKEN_SERIALIZER
如下所示:
REST_AUTH_SERIALIZERS = {
...
'TOKEN_SERIALIZER': 'Project.path.to.TokenSerializer',
}
现在我得到了我需要的数据:
请参考这个link
您可以使用包含用户的自定义序列化程序覆盖默认值 TokenSerializer
。
在文件中说 yourapp/serializers.py
from django.conf import settings
from rest_framework import serializers
from rest_auth.models import TokenModel
from rest_auth.utils import import_callable
from rest_auth.serializers import UserDetailsSerializer as DefaultUserDetailsSerializer
# This is to allow you to override the UserDetailsSerializer at any time.
# If you're sure you won't, you can skip this and use DefaultUserDetailsSerializer directly
rest_auth_serializers = getattr(settings, 'REST_AUTH_SERIALIZERS', {})
UserDetailsSerializer = import_callable(
rest_auth_serializers.get('USER_DETAILS_SERIALIZER', DefaultUserDetailsSerializer)
)
class CustomTokenSerializer(serializers.ModelSerializer):
user = UserDetailsSerializer(read_only=True)
class Meta:
model = TokenModel
fields = ('key', 'user', )
并在您的应用设置中使用 rest-auth 配置覆盖默认值 class
yourapp/settings.py
REST_AUTH_SERIALIZERS = {
'TOKEN_SERIALIZER': 'yourapp.serializers.CustomTokenSerializer' # import path to CustomTokenSerializer defined above.
}
我在我的 Django 项目中使用 django-rest-auth
。
登录rest-auth/login/
后,如何return获取更多信息?
在 rest-auth/login/
中,当我登录用户时,它 return 是 key
。
我也想return用户的信息,请问如何获取?
最后,我得到了我的解决方案:
class TokenSerializer(serializers.ModelSerializer):
"""
Serializer for Token model.
"""
user = UserInfoSerializer(many=False, read_only=True) # this is add by myself.
class Meta:
model = TokenModel
fields = ('key', 'user') # there I add the `user` field ( this is my need data ).
在项目 settings.py
中,添加 TOKEN_SERIALIZER
如下所示:
REST_AUTH_SERIALIZERS = {
...
'TOKEN_SERIALIZER': 'Project.path.to.TokenSerializer',
}
现在我得到了我需要的数据:
请参考这个link
您可以使用包含用户的自定义序列化程序覆盖默认值 TokenSerializer
。
在文件中说 yourapp/serializers.py
from django.conf import settings
from rest_framework import serializers
from rest_auth.models import TokenModel
from rest_auth.utils import import_callable
from rest_auth.serializers import UserDetailsSerializer as DefaultUserDetailsSerializer
# This is to allow you to override the UserDetailsSerializer at any time.
# If you're sure you won't, you can skip this and use DefaultUserDetailsSerializer directly
rest_auth_serializers = getattr(settings, 'REST_AUTH_SERIALIZERS', {})
UserDetailsSerializer = import_callable(
rest_auth_serializers.get('USER_DETAILS_SERIALIZER', DefaultUserDetailsSerializer)
)
class CustomTokenSerializer(serializers.ModelSerializer):
user = UserDetailsSerializer(read_only=True)
class Meta:
model = TokenModel
fields = ('key', 'user', )
并在您的应用设置中使用 rest-auth 配置覆盖默认值 class
yourapp/settings.py
REST_AUTH_SERIALIZERS = {
'TOKEN_SERIALIZER': 'yourapp.serializers.CustomTokenSerializer' # import path to CustomTokenSerializer defined above.
}