【问题标题】:Error overriding jwt_response_payload_handler to send back serialized user覆盖 jwt_response_payload_handler 以发送回序列化用户时出错
【发布时间】:2019-11-14 03:05:29
【问题描述】:

我添加了对 UserSerializer 的调用 这是我的序列化器

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model=user
        fields="__all__"

我的自定义模型

from django.db import models

class user(models.Model):
    username=models.CharField(max_length=150)
    firstname=models.CharField(max_length=20)
    lastname=models.CharField(max_length=20)
    email=models.CharField(max_length=40)
    password=models.CharField(max_length=40)
    type=models.CharField(max_length=10)

    def __str__(self):
        return self.firstname

我添加了一个自定义 JWT 处理程序

from login.serializers import UserSerializer


def my_jwt_response_handler(token, user=None, request=None):
   return {
        'token': token,
        'user': UserSerializer(user, context={'request':request}).data
    }

在 settings.py 我有

JWT_AUTH = {
    'JWT_RESPONSE_PAYLOAD_HANDLER': 'login.utils.my_jwt_response_handler'
}

当我尝试登录时,出现此错误?

AttributeError: Got AttributeError when attempting to get a value for field `firstname` on serializer `UserSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `User` instance.
Original exception text was: 'User' object has no attribute 'firstname'.

任何帮助将不胜感激

【问题讨论】:

    标签: python django django-rest-framework django-rest-framework-jwt


    【解决方案1】:

    您是否已迁移数据库? python manage.py makemigrations 和 python manage.py migrate

    我还建议您查看这篇博文,了解如何在 Django 中使用自定义用户模型。

    https://wsvincent.com/django-custom-user-model-tutorial/

    【讨论】:

    • 您的问题解决了吗?如果解决了,您的解决方案是什么?
    • 还没有解决办法!
    猜你喜欢
    • 2016-08-03
    • 2015-06-10
    • 1970-01-01
    • 2021-07-22
    • 2016-06-03
    • 1970-01-01
    • 2012-02-05
    • 2014-03-18
    • 2012-08-23
    相关资源
    最近更新 更多