【发布时间】:2020-02-13 05:21:41
【问题描述】:
我在使用序列化程序创建身份验证令牌时遇到错误,我是 Django 初学者研究人员并尝试各种方法来解决但无法解决,请任何人都可以帮助我。
文件“/usr/local/lib/python3.7/site-packages/rest_framework/serializers.py”,第 169 行,在创建中
raise NotImplementedError('create() 必须实现。')
NotImplementedError:必须实现create()。
class CreateAuthTokenSerializer(serializers.Serializer):
"""Authentication serializer"""
email = serializers.CharField()
password = serializers.CharField(
style={'input_type': 'password'},
trim_whitespace=False
)
def validate(self, attrs):
email = attrs.get('email')
password = attrs.get('password')
user = authenticate(
request=self.context.get('request'),
username=email,
password=password
)
if not user:
msg = _('unable to authenticate with username and password')
raise serializers.ValidationError(msg, code='authentication')
attrs['user'] = user
return attrs
提前致谢
【问题讨论】:
-
当您使用
serializers.Serializer时,它不像serializers.ModelSerializer那样内置了create()方法。可能你正在尝试调用serializer.save(),如果你想保存一个实例,那么你需要实现create()方法。但可能你不需要它。更多信息:django-rest-framework.org/api-guide/serializers/… -
嗨 Rudra,我不想在
serializers.Serializer中使用create()方法,我想要在这个 [github.com/encode/django-rest-framework/blob/… -
然后从视图中删除任何类似于 serializers.save() 的代码,然后它应该被修复
标签: django django-rest-framework python-3.7