【问题标题】:Django - Getting AttributeError 'User' object has no attribute 'cleaned_data' while cleaning form dataDjango - 在清理表单数据时获取 AttributeError 'User' 对象没有属性 'cleaned_data'
【发布时间】:2017-12-25 19:19:27
【问题描述】:

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

AttributeError 'User' 对象没有属性 'cleaned_data'

Image of that AttributeError

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

views.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})

forms.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"]

我找不到出错的地方。

【问题讨论】:

    标签: python django django-models django-forms django-views


    【解决方案1】:

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

    但是这里不需要获取用户名,因为表单已经设置了它。

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

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2018-10-28
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2016-06-24
      相关资源
      最近更新 更多