gpt4 book ai didi

python - 属性错误: 'NoneType' object has no attribute 'check_password' error in django allauth

转载 作者:行者123 更新时间:2023-12-01 05:32:29 25 4
gpt4 key购买 nike

我使用 django all auth 进行登录和注册 View 和模板,但我也想实现更改密码功能,因此默认情况下它有一个我们可以使用的模板 password_change.html ,但我想要一个自定义设计,并且不想使用内置 allauth 密码更改 View 刷新页面,因此决定仅使用 allauth 的 ChangePasswordForm 形式将其导入到我的 View 中。

我正在使用ajax向url(view)发布请求并返回Json响应,以便我可以在我的自定义中使用jquery/ajax中的响应模板。

views.py

from allauth.account.forms import ChangePasswordForm

@login_required
def change_password(request):
form = ChangePasswordForm(data=request.POST)
if form.is_valid():
form.save()
result = {'status':'done'}
else:
result = {'status':'undone', 'form_errors':form.errors}
json_data = json.dumps(result)
return HttpResponse(json_data, 'application/json')

templates.html

$('.form').click(function(){
$.ajax({
type: "POST",
url: '/change_password/',
data: form_data,
success: function(response)
{
if(response.status === 'done')
console.log('great====>');
......
.....
}
});
});

并且我正在单独渲染模板中的字段,如 form.oldpassword、form.newpassword、... 也有错误。

因此,当我提交没有任何数据的表单时,我收到了正确的错误消息,此字段是必需的,但是当我仅输入一个字段oldpassword并提交时我收到以下错误的表格

  File "/home/user/Envs/proj/local/lib/python2.7/site-packages/django/forms/forms.py", line 290, in _clean_fields
value = getattr(self, 'clean_%s' % name)()
File "/home/user/Envs/proj/local/lib/python2.7/site-packages/allauth/account/forms.py", line 334, in clean_oldpassword
if not self.user.check_password(self.cleaned_data.get("oldpassword")):
AttributeError: 'NoneType' object has no attribute 'check_password'

因此,调试后,我在 allauth forms.py 中的 ChangePasswordForm 类下的 clean_oldpassword 验证方法中检查了 self.user 的值正在打印 None,所以实际上我面临着上面的错误?

当使用 django allauth ChangePasswordForm 时,为什么实际上用户没有?

使用ChangePasswordForm表单时我做错了什么吗?

最佳答案

您需要将用户对象传递给您的类:

form = ChangePasswordForm(data=request.POST, user=request.user)

关于python - 属性错误: 'NoneType' object has no attribute 'check_password' error in django allauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com