Python 在Django中保存UserCreationForm的问题
我有我的注册视图,它使用Python 在Django中保存UserCreationForm的问题,python,django,django-forms,Python,Django,Django Forms,我有我的注册视图,它使用UserCreationForm。这是: def registration(request): if request.method == 'POST': form = UserCreationForm() if form.is_valid: user = form.save() login(request, user) return redirect('home
UserCreationForm
。这是:
def registration(request):
if request.method == 'POST':
form = UserCreationForm()
if form.is_valid:
user = form.save()
login(request, user)
return redirect('home')
else:
if request.user.is_authenticated:
logout(request)
form = UserCreationForm()
context = {'form':form,}
return render(request, "register.html",context)
但不知何故,当我尝试创建新用户时,我得到了AttributeError
,即“
“UserCreationForm”对象没有“cleaned_data”属性,“即使我没有任何cleaned_data
调用。我试图创建我的自定义注册表单,该表单使用了已清理的\u数据
,但我将其扔掉,并从项目中完全删除了我的自定义表单。为什么会发生这种情况
另外,根据我的Django调试返回,导致问题的行是user=form.save()
在基于函数的视图中处理表单提交时,需要将请求数据传递给表单构造函数,以获得填充的表单实例。
调用form.is_valid()(注意,这实际上是一个指出的方法)将执行表单的clean方法,该方法负责将干净的数据存储在form.cleaned_数据中。同样,正如前面所指出的,form.save()在内部使用form.cleaned_数据,这意味着表单在保存之前需要清理和验证
def注册(请求):
如果request.method==“POST”:
form=UserCreationForm(request.POST)#用请求数据实例化表单
if form.is_valid():#验证并清除表单
...
这在本文中得到了很好的解释。看看这个,但我真的建议浏览整个文档,以便更好地了解django中的表单是如何工作/使用的。在基于函数的视图中处理表单提交时,需要将请求数据传递给表单构造函数,以便获得填充的表单实例。
调用form.is_valid()(注意,这实际上是一个指出的方法)将执行表单的clean方法,该方法负责将干净的数据存储在form.cleaned_数据中。同样,正如前面所指出的,form.save()在内部使用form.cleaned_数据,这意味着表单在保存之前需要清理和验证
def注册(请求):
如果request.method==“POST”:
form=UserCreationForm(request.POST)#用请求数据实例化表单
if form.is_valid():#验证并清除表单
...
这在本文中得到了很好的解释。看看这个,但我真的建议浏览整个文档,以便更好地了解django中的表单是如何使用的。而不是
form.is\u valid
它应该是form.is\u valid()
。(您需要调用该方法)form.save()
将在内部使用表单的已清理的\u数据来保存实例。而不是form.is\u valid
它应该是form.is\u valid()
。(您需要调用该方法)form.save()
将在内部使用表单的cleaned_data
来保存实例。