Django save()缺少1个必需的位置参数:';自我';
我正在使用django rest框架注册和登录。我收到这个错误save()缺少1个必需的位置参数:“self” 这是我的serializers.pyDjango save()缺少1个必需的位置参数:';自我';,django,django-rest-framework,Django,Django Rest Framework,我正在使用django rest框架注册和登录。我收到这个错误save()缺少1个必需的位置参数:“self” 这是我的serializers.py class clientnameSerializer(serializers.ModelSerializer): password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True) class Meta: model
class clientnameSerializer(serializers.ModelSerializer):
password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True)
class Meta:
model = clientname
fields = ('id','username','password', 'password2' , 'email')
ordering = ['id',]
extra_kwargs = {
'password': {'write_only': True}
}
def save(self):
account = clientname(
email=self.validated_data['email'],
username=self.validated_data['username']
)
password = self.validated_data['password'],
password2 = self.validated_data['password2']
if password != password2:
raise serializers.ValidationError({'password': 'Passwords must match.'})
account.set_password(password)
account.save()
return account
如您所见,我的序列化程序中有“account.save()”,因为当您必须重写save方法时,这一点非常重要
这是我的观点
@api_view(['POST'])
def registration_view(request):
if request.method == 'POST':
serializer = clientnameSerializer(data=request.data)
data={}
if serializer.is_valid():
account = clientname.save()
data['response'] = "successfully registered a new user."
data['email'] = account.email
data['username'] = account.username
else:
data = serializer.errors
return Response(data)
这是我在尝试注册帐户时遇到的错误
Exception Value: save() missing 1 required positional argument: 'self'
这是完整的回溯
回溯:
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
54. return view_func(*args, **kwargs)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
505. response = self.handle_exception(exc)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/rest_framework/views.py" in handle_exception
465. self.raise_uncaught_exception(exc)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/rest_framework/views.py" in raise_uncaught_exception
476. raise exc
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/rest_framework/views.py" in dispatch
502. response = handler(request, *args, **kwargs)
File "/home/schoolsite/schoolsitedir/env/lib/python3.6/site-packages/rest_framework/decorators.py" in handler
50. return func(*args, **kwargs)
File "/home/schoolsite/schoolsitedir/Homepage/api/views.py" in registration_view
25. account = clientname.save()
这毫无意义。您可能想要:
account = serializer.save()
在前端应用程序中验证password1==password2,以便只提交密码,怎么样。因为这是REST API,您可能只是想在某个时候使用这两个密码传递数据。以下哪行会引发该错误?请也发布整个回溯。@deceze我更新我的问题,请参见和
clientname
是一个模型类吗?那么您希望clientname.save()
做什么呢?是的,客户端名称是一个模型类,要保存在我的数据库中,我将clientname.save()放入数据库@deceze中,为了将数据保存到我的数据库中,我应该做些什么来解决我的问题?
account = serializer.save()