NotImplementedError: Django doesn't provide a DB representation
NotImplementedError: Django doesn't provide a DB representation
我收到以下错误:
Internal Server Error: /api/user/change-password/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "/opt/project/views.py", line 227, in put
request.user.set_password(password)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py", line 480, in set_password
raise NotImplementedError("Django doesn't provide a DB representation for User.")
NotImplementedError: Django doesn't provide a DB representation for User.
我的代码显示在第 227 行:
class ChangePasswordAPI(View):
@staticmethod
def put(request):
data = request.read()
payload = json.loads(data)
password = payload['password']
if not request.user:
return HttpResponse(
json.dumps({
'success': False,
'error': 'user_not_exist'
})
)
# the following line is 227
request.user.set_password(password)
request.user.save()
return HttpResponse(
json.dumps({
'success': True,
})
)
首先,我认为这是因为我没有更新 Django,但现在我更新了,但我收到了同样的错误。
我查看了其他用户提出的一些解决方案,但 none 适用于我的情况
有什么帮助吗?
if not request.user:
这个 if 语句只检查 request.user
是否是一个真实的对象,它永远是。如果用户未通过身份验证,则它是一个没有数据库表示的 AnonymousUser
。 set_password()
和其他各种方法将引发 NotImplementedError
.
要修复它,请将 if 语句更改为:
if not request.user.is_authenticated():
我收到以下错误:
Internal Server Error: /api/user/change-password/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py", line 89, in dispatch
return handler(request, *args, **kwargs)
File "/opt/project/views.py", line 227, in put
request.user.set_password(password)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/models.py", line 480, in set_password
raise NotImplementedError("Django doesn't provide a DB representation for User.")
NotImplementedError: Django doesn't provide a DB representation for User.
我的代码显示在第 227 行:
class ChangePasswordAPI(View):
@staticmethod
def put(request):
data = request.read()
payload = json.loads(data)
password = payload['password']
if not request.user:
return HttpResponse(
json.dumps({
'success': False,
'error': 'user_not_exist'
})
)
# the following line is 227
request.user.set_password(password)
request.user.save()
return HttpResponse(
json.dumps({
'success': True,
})
)
首先,我认为这是因为我没有更新 Django,但现在我更新了,但我收到了同样的错误。
我查看了其他用户提出的一些解决方案,但 none 适用于我的情况
有什么帮助吗?
if not request.user:
这个 if 语句只检查 request.user
是否是一个真实的对象,它永远是。如果用户未通过身份验证,则它是一个没有数据库表示的 AnonymousUser
。 set_password()
和其他各种方法将引发 NotImplementedError
.
要修复它,请将 if 语句更改为:
if not request.user.is_authenticated():