私はDjangoでユーザー登録ページを作成しようとしていました。 すべてうまくいった。私は、フォームデータを送信したとき、私はエラーDjango - AttributeError 'User'オブジェクトの取得中にフォームデータのクリーニング中に 'cleaned_data'属性がありません
の下にこれを取得はAttributeError「ユーザー」オブジェクトが何の属性「cleaned_data」
を持っていませんが、私はstackoverflowの上で検索し、オブジェクトことがわかりました。 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"]
私がミスをしたところ、私が見つける傾けます。