我正在尝试验证字段,一个字段由用户填充,另一个字段对用户隐藏,但由模板填充。
这是我的表格:
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
关于python - Django - 表单验证,隐藏和可见字段的干净方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872136/