0

Also habe ich gerade ein Formular erstellt und bekomme diesen Fehler, warum? Ich verwende die Cleaned_data korrekt, nachdem ich überprüft habe, ob das Formular gültig ist, oder?'UserForm' Objekt hat kein Attribut 'Cleaned_data'

Das ist mein forms.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}) 

Mein urls.py:

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

und die Form Standort:

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'] 

Das ist mein views.py ist

<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> 

Es gibt andere Themen zu diesem Problem, aber ich konnte keine Hilfe von ihnen bekommen, da die meisten Leute nicht die Form i.form_is_valid() eingeschlossen haben, aber in meinem Fall tue ich.

+0

'cleaned_data' sollte Kleinbuchstaben sein – Sayse

+0

@Sayse Appriciate Ihre Antwort. Beide in Kleinbuchstaben geändert, immer noch den gleichen Fehler .. – Acework

+0

Bitte die vollständige Stack-Trace – Sayse

Antwort

1

Verwenden form.cleaned_data.get('username') statt form.Cleaned_data

bearbeiten Verwenden 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 gibt die Klasse des Formulars d.h UserForm. Sie brauchen ein Objekt dieser Klasse. Die Klasse hat kein Attribut cleaned_data.

+0

Danke für Ihre Antwort. Ich habe beide form.Cleaned_data zu form.cleaned_data.get ('Benutzername/Passwort') geändert, immer noch der gleiche Fehler. – Acework

+0

Verwenden Sie 'FormView' oder' View' in der Ansichts-Basisklasse? – maverick

+0

Ansicht, Klasse UserFormView (View): in meiner views.py – Acework

Verwandte Themen