Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中保存UserCreationForm的问题_Python_Django_Django Forms - Fatal编程技术网

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
来保存实例。