从默认响应

时间:2018-04-24 18:59:10

标签: django python-3.x django-models django-rest-framework django-views

在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),

我可以找到的唯一可能更改响应的地方是库文件,我相信这是不明智的。任何帮助都会很棒。

1 个答案:

答案 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