gpt4 book ai didi

python - Django - 清理表单数据时出现 AttributeError 'User' 对象没有属性 'cleaned_data'

转载 作者:行者123 更新时间:2023-12-01 02:20:43 25 4
gpt4 key购买 nike

我试图在 Django 中制作一个用户注册页面。一切都很顺利。但是当我提交表单数据时,我收到以下错误

AttributeError 'User' object has no attribute 'cleaned_data'

Image of that AttributeError

我在 stackoverflow 上搜索,发现 object.cleanded_data 应该放在 object.is_valid() 之后,否则应该面临 AttributeError。但我在检查 is_valid() 后仍然出现错误。我的代码:

View .py

class UserFormView(View):
form_class = UserForm
template_name = "music/registration_form.html"

def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {"form": form})

def post(self, request):
form = self.form_class(request.POST)

if form.is_valid():
user = form.save(commit=False)
username = user.cleaned_data["username"]
password = user.cleaned_data["password"]
user.set_password(password)
user.username = username
user.save()

user = authenticate(username= username, password= password)

if user is not None:
if user.is_active:
login(request, user)
return redirect("music:index")

return render(request, self.template_name, {"form": form})

表单.py

from django.contrib.auth.models import User
from django import forms

class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)

class Meta:
model = User
fields = ["username", "email", "password"]

我找不到我哪里出错了。

最佳答案

form.save() 的结果是模型的实例,而不是表单。您应该正在访问 form.cleaned_data

但是,无需在此处获取用户名,因为表单已经设置了它。

user = form.save(commit=False)
password = form.cleaned_data["password"]
user.set_password(password)
user.save()

关于python - Django - 清理表单数据时出现 AttributeError 'User' 对象没有属性 'cleaned_data',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971410/

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