Python 生成注册表页时出错,AttributeError位于/register/';注册执行';对象没有属性';清理数据';

Python 生成注册表页时出错,AttributeError位于/register/';注册执行';对象没有属性';清理数据';,python,django,Python,Django,我正在使用Python 2.7.15&&Django 1.11.18构建一个注册页面,但仍然出现错误: AttributeError at /register/ 'RegisterForm' object has no attribute 'cleaned_data' 我浏览了其他非常类似的帖子,尝试了这些建议,但仍然没有得到一个实用的结果。在我看来,一切都井然有序,但事实并非如此。下面是我的代码,谢谢 Views.py看起来像: def register_page(request):

我正在使用Python 2.7.15&&Django 1.11.18构建一个注册页面,但仍然出现错误:

AttributeError at /register/
'RegisterForm' object has no attribute 'cleaned_data'
我浏览了其他非常类似的帖子,尝试了这些建议,但仍然没有得到一个实用的结果。在我看来,一切都井然有序,但事实并非如此。下面是我的代码,谢谢

Views.py看起来像:

def register_page(request):
    form = RegisterForm(request.POST or None)
    context = {
        "form": form
    }
    if form.is_valid():
        form.save()
        print(form.cleaned_data)
        username  = form.cleaned_data.get("username")
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
    new_user = User.objects.create_user(username, email, password)
    print(new_user)

    return render(request, "auth/register.html", context)
class RegisterForm(forms.Form):
username = forms.CharField()
email    = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)

def clean(self):
    data = self.cleaned_data
    password = self.cleaned_data.get('password')
    password2 = self.cleaned_data.get('password2')
    if password2 != password:
        raise forms.ValidationError("Passwords must match.")
    return data
   from django.conf.urls import url
from django.contrib import admin

from .views import home_page, about_page, contact_page, login_page, register_page

urlpatterns = [
    url(r'^$', home_page), 
    url(r'^about/$', about_page),
    url(r'^contact/$', contact_page),
    url(r'^login/$', login_page),
    url(r'^register/$', register_page),                  
    url(r'^admin/', admin.site.urls),
]
forms.py看起来像:

def register_page(request):
    form = RegisterForm(request.POST or None)
    context = {
        "form": form
    }
    if form.is_valid():
        form.save()
        print(form.cleaned_data)
        username  = form.cleaned_data.get("username")
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
    new_user = User.objects.create_user(username, email, password)
    print(new_user)

    return render(request, "auth/register.html", context)
class RegisterForm(forms.Form):
username = forms.CharField()
email    = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)

def clean(self):
    data = self.cleaned_data
    password = self.cleaned_data.get('password')
    password2 = self.cleaned_data.get('password2')
    if password2 != password:
        raise forms.ValidationError("Passwords must match.")
    return data
   from django.conf.urls import url
from django.contrib import admin

from .views import home_page, about_page, contact_page, login_page, register_page

urlpatterns = [
    url(r'^$', home_page), 
    url(r'^about/$', about_page),
    url(r'^contact/$', contact_page),
    url(r'^login/$', login_page),
    url(r'^register/$', register_page),                  
    url(r'^admin/', admin.site.urls),
]
url.py看起来像:

def register_page(request):
    form = RegisterForm(request.POST or None)
    context = {
        "form": form
    }
    if form.is_valid():
        form.save()
        print(form.cleaned_data)
        username  = form.cleaned_data.get("username")
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
    new_user = User.objects.create_user(username, email, password)
    print(new_user)

    return render(request, "auth/register.html", context)
class RegisterForm(forms.Form):
username = forms.CharField()
email    = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)

def clean(self):
    data = self.cleaned_data
    password = self.cleaned_data.get('password')
    password2 = self.cleaned_data.get('password2')
    if password2 != password:
        raise forms.ValidationError("Passwords must match.")
    return data
   from django.conf.urls import url
from django.contrib import admin

from .views import home_page, about_page, contact_page, login_page, register_page

urlpatterns = [
    url(r'^$', home_page), 
    url(r'^about/$', about_page),
    url(r'^contact/$', contact_page),
    url(r'^login/$', login_page),
    url(r'^register/$', register_page),                  
    url(r'^admin/', admin.site.urls),
]
下面是回溯 我在这里遗漏了什么?

在forms.py中,你说:

def clean(self):
    data = self.cleaned_data
....
但是
self.cleaned_data
是未定义的-您的示例中没有包含类似
self.cleaned_data=


因此,行
data=self.cleaned_data
抱怨它不知道
self.cleaned_data
是什么

请出示回溯。这个错误到底发生在哪里?它说第110行是问题所在:email=form.cleaned_data.get(“email”)Ok是有意义的,但我应该在两者之间加什么呢?这取决于具体情况,但可能是
super().clean()