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

时间:2014-05-26 14:14:02

标签: 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']
        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>

我得到的唯一错误是:yyyy=self.cleaned_data['yyyy']行的'yyyy'。

我发现了这个问题:Hidden field in Django form not in cleaned_data

但这并不是很有帮助。

编辑1:生成的HTML代码

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

1 个答案:

答案 0 :(得分:2)

始终检查生成的HTML和POST数据以获取请求。你会看到任何字段缺失&amp;东西。另外,使用.get(field_name)方法。

Check here for more.如何从cleaned_data等正确访问super