Python Django-表单验证,隐藏和可见字段的清理方法

Python Django-表单验证,隐藏和可见字段的清理方法,python,django,forms,hidden-field,Python,Django,Forms,Hidden Field,我正在尝试验证字段,一个是由用户填写的可见字段,另一个是:为用户隐藏但由模板填写的字段 这是我的表格: class AForm(forms.Form): xxxx = forms.CharField(max_length=30) yyyy = forms.CharField(max_length=30,widget=forms.HiddenInput) def clean(self): xxxx=self.cleaned_data['xxxx']

我正在尝试验证字段,一个是由用户填写的可见字段,另一个是:为用户隐藏但由模板填写的字段

这是我的表格:

class AForm(forms.Form):

    xxxx = forms.CharField(max_length=30)
    yyyy = forms.CharField(max_length=30,widget=forms.HiddenInput)

    def clean(self):

        xxxx=self.cleaned_data['xxxx']
        yyyy=self.cleaned_data['yyyy']              ##ERROR
        if function_check(xxxx,yyyy)==False:
            raise forms.ValidationError("Try again!")

        return xxxx
在我的模板中,我有:

<form method="post" action="">
    {% csrf_token %}
    {{form.xxxx}}
    <input id="id_yyyy" name="yyyy" type="hidden" value='{{ code_generated_value }}' maxlength="30">
    <input type="submit"/>
</form>

始终检查生成的HTML和POST数据以获取请求。您将看到缺少的任何字段&stuff。另外,使用
.get(字段名称)
方法


如何从
super
等正确访问
cleaned\u数据

您确定
code\u生成的\u值
返回了什么吗?您也可以尝试使用
yyyy=self.cleaned_data.get('yyyy')
而不是
yyy=self.cleaned_data['yyyyy']
获取值。您会得到什么错误?另外,为什么会有此
返回xxxx
?它不应该出现在类级别上。@nnaelle,是的,我确信
code\u生成的\u值
会返回一些东西。我按照您的建议尝试了
yyyy=self.cleaned_data.get('yyyy')
,但yyyy是空的。@AlexShkop,我只得到了问题末尾指出的错误。我纠正了缩进错误:代码中的缩进很好,但Stackoverflow中的缩进错误,谢谢;)
   <p><input id="id_xxxx" maxlength="30" name="xxxx" type="text" /></p>
   <input id="id_yyyy" maxlength="30" name="yyyy" type="hidden" value='97a8eee9477b73dda401b15369f8db00a0d6ab79.png'>
   <input type="submit"/>