在Django 2.0中我使用rest_auth,目前它返回一个像
这样的响应{
"token": "foo_token",
"user":{
"pk": 1,
"username": "admin",
"email": "test@test.com",
"first_name": "John",
"last_name": "Doe"
}
}
我想更改此内容以返回除django提供的默认响应之外的内容。有点像...
{
"token": "foo_token",
"pk":1,
"username": "admin",
"somefield": "Foo Funk"
}
我的urls.py目前看起来像这样
url(r'^rest-auth/registration/', include('rest_auth.registration.urls')),
url(r'^refresh-token/', refresh_jwt_token),
url(r'^api/userlist', users.user_list),
我可以找到的唯一可能更改响应的地方是库文件,我相信这是不明智的。任何帮助都会很棒。
答案 0 :(得分:1)
rest_auth
允许您通过在settings.py
中指定自己的序列化程序实现来更改回复。
例如,如果您想自定义JWT身份验证的响应,则可以创建:
# myapp/serializers.py
class MyCustomJWTSerializer(serializers.Serializer):
token = serializers.CharField()
pk = serializers.IntegerField()
username = serializers.CharField()
...
然后您可以在settings.py
中配置为:
REST_AUTH_SERIALIZERS = {
'JWT_SERIALIZER': 'myapp.serializers.MyCustomJWTSerializer'
}
此处有更多信息:https://django-rest-auth.readthedocs.io/en/latest/configuration.html