你的数据不会传递任何东西

2024-10-03 09:08:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个Django项目,似乎我不能在我的程序的任何地方使用cleaned_data模块。每次我使用它时,它都会引发一个键错误(表示该键不存在),当我使用cleaned_data.get时,它什么也不传递。我只能用“表格数据“(正如你在我的代码中看到的)一切正常。我只是想知道为什么我不能使用这些数据? 这是我的表格.py地址:

class RegisterationForm(forms.Form):

    first_name = forms.CharField
    last_name = forms.CharField
    username = forms.CharField
    email = forms.EmailField
    password = forms.CharField
    password2 = forms.CharField


    def clean(self):
        password = self.cleaned_data.get('password')
        password2 = self.cleaned_data.get('password2')

        if password and password != password2:
            raise forms.ValidationError("passwords do not match")

        return self.cleaned_data

这是我的视图.py地址:

def寄存器(请求):

if request.method == 'POST':
    form = RegisterationForm(request.POST)

    if form.is_valid():

        user_info={}
        user_info['username'] = form.data['username']
        user_info['first_name'] = form.data['first_name']
        user_info['last_name'] = form.data['last_name']
        user_info['password'] = form.data['password']
        user_info['email']= form.data['email']

        #salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
        #usernamesalt = user_info['username']
        #if isinstance(usernamesalt, unicode):
        #    usernamesalt = usernamesalt.encode('utf8')
        user_info['activation_key'] = 1#hashlib.sha1(salt+usernamesalt).hexdigest()

        form.sendEmail(user_info)
        form.save(user_info)
        return render_to_response('register_success.html',user_info)

    else:
        form_save = form

args = {}
args.update(csrf(request))
args['form'] = RegisterationForm()
return render_to_response('register.html',args)

Tags: nameselfforminfodataifusernameargs
2条回答

因为您没有调用父类clean方法来首先获取数据:

def clean(self):
    cleaned_data = super(RegisterationForm, self).clean()
    password = cleaned_data.get('password')
    password2 = cleaned_data.get('password2')

    if password and password != password2:
        raise forms.ValidationError("passwords do not match")

查看django doc关于clean method。你知道吗

如果这是您的实际代码,那么您的表单没有任何字段,因为您没有调用任何字段定义。应该是:

class RegisterationForm(forms.Form):
    first_name = forms.CharField()
    last_name = forms.CharField()
    username = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField()
    password2 = forms.CharField()

相关问题 更多 >