0

フォームを作成してこのエラーが発生したのはなぜですか?フォームが有効かどうかを確認した後、私は正しくCleaned_dataを使用しますか?'UserForm'オブジェクトに 'Cleaned_data'属性がありません

これは私のforms.pyです:

class UserForm(forms.ModelForm): 
password = forms.CharField(widget=forms.PasswordInput) 
username = forms.CharField(max_length=10) 
email = forms.EmailField() 

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

これは私のviews.pyです:

class UserFormView(View): 
form_class = UserForm 
template_name = 'Home/index.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 = form.Cleaned_data['username'] 
     password = form.Cleaned_data['password'] 
     user.set_password(password) 
     user.save() 

     user = authenticate(username=username, password=password) 
     if user is not None: 
      if user.is_active: 
       login(request, user) 
       return redirect('Home:Dashboard') 

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

マイurls.py:

urlpatterns = [ 
url(r'^$', views.index, name='index'), 
url(r'^register$', views.UserFormView.as_view(), name='register'),] 

とフォームの場所:

<form action="/register" method="post"> 
    {% csrf_token %} 
<ul class="contactList"> 
    <li id="username1" class="contact">{{ form.username }}</li> 
    <li id="email1" class="contact">{{ form.email }}</li> 
    <li id="password1" class="contact">{{ form.password }}</li> 
</ul> 
<input type="submit" value="Submit"> 
</form> 

この問題については他の話題がありますが、ほとんどの人がif form.is_valid()を含めなかったため、私は助けを得ることができませんでしたが、私の場合はそうです。

+0

'cleaned_data'は小文字である必要があります。 – Sayse

+0

@Sayseあなたの返事を飾りましょう。両方とも小文字に変更されましたが、同じエラーが発生しました。 – Acework

+0

完全なスタックトレースを含めてください – Sayse

答えて

1

代わりform.Cleaned_data

編集 使用FormView

from django.views.generic.edit import FormView 
class UserFormView(FormView): 
    form_class = UserForm 
    template_name = 'Home/index.html' 

    def form_valid(self, form): 
     user = form.save(commit=False) 
     username = form.cleaned_data.get('username') 
     ... 

get_form_classの使用form.cleaned_data.get('username')は、フォームすなわちUserFormのクラスを返します。そのクラスのオブジェクトが必要です。クラスには属性がありませんcleaned_data

+0

ご返信ありがとうございます。私はform.cleaned_dataをform.cleaned_data.get( 'username/password')に変更しましたが、それと同じエラーです。 – Acework

+0

ビューベースクラスで 'FormView'または' View'を使用していますか? – maverick

+0

View、class UserFormView(View):私のviews.py – Acework

関連する問題