【发布时间】:2014-07-15 08:18:21
【问题描述】:
我正在尝试验证字段,一个由用户填写可见,另一个:对用户隐藏但由模板填写。
这是我的表格:
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"/>
【问题讨论】:
-
你确定
code_generated_value会返回一些东西吗?您也可以尝试使用yyyy=self.cleaned_data.get('yyyy')而不是yyyy=self.cleaned_data['yyyy']获取值 -
你得到什么错误?
-
另外,你为什么有这个
return xxxx?它不应该出现在班级级别。 -
@nnaelle,是的,我确信
code_generated_value会返回一些东西。我按照您的建议尝试了yyyy=self.cleaned_data.get('yyyy'),但 yyyy 是空的。 -
@AlexShkop,我只收到问题末尾指出的错误。我纠正了我的缩进错误:在我的代码中很好,但在 Stackoverflow 中出错了,谢谢 ;)
标签: python django forms hidden-field