Skip to main content
 首页 » 编程设计

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

2024年11月01日35zhenyulu

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

这是我的表格:

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

请您参考如下方法:

始终检查生成的 HTML 和 POST 数据以获取请求。您会看到任何缺失的字段和内容。此外,使用 .get(field_name) 方法。

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