Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么我的Django表单没有引发验证错误?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>以下是我的表格代码:</p> <pre><code>class ConfirmEmailForm(forms.Form): email = forms.EmailField() subscribe = forms.IntegerField() code = forms.CharField(max_length=80) def clean_subscribe(self): value = bool(self.cleaned_data['subscribe']) self.cleaned_data['subscribe'] = value return value def clean(self): cleaned_data = super(ConfirmEmailForm, self).clean() email = cleaned_data['email'] code = cleaned_data['code'] user = User.objects.filter(username=email).first() if not user: raise forms.ValidationError('Email not found') self.cleaned_data['user'] = user if user.emailverification.is_key_expired(): raise forms.ValidationError('Link expired, please regenerate') if not user.emailverification.key == code: raise forms.ValidationError('Invalid Link') return cleaned_data </code></pre> <p>我用这张表格申请GET。现在,当我发送没有<code>email</code>字段的请求时,我原以为错误将在<code>cleaned_data</code>处出现,但是它不会引发任何错误,而是在下一行得到<code>KeyError</code>。在</p> <p>显然,它将引发一个<code>KeyError</code>,因为它不存在。但是我的问题是,为什么这个错误没有出现在<code>super(ConfirmEmailForm, self).clean()</code>本身。在</p> <p>以下是完整的回溯:</p> ^{pr2}$ <p>为什么会这样?我怎么解决这个问题?访问<code>clean</code>中已验证和清理的数据的正确方法是什么?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我认为这是因为当你使用clean方法时,这个方法引发的任何ValidationError都不会与某个特定的字段相关联</p> <p>尝试创建一个除此之外的自定义。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何为此数据帧创建散点图?
5 回答
如何为此编写Django模板
2 回答
如何为此表达式编写正则表达式?
9 回答
如何为步进电机选择合适的值?
10 回答
如何为每15分钟间隔的日期时间行(在新列中)添加标签?
4 回答
如何为每一列创建汇总表?
6 回答
如何为每一组groupbyPandas做滚动“得到假人”
2 回答
如何为每一行分别运行函数(python)?
3 回答
如何为每一行生成一个随机数?
1 回答
如何为每一轮将pytorch模型输出存储到numpy
9 回答
如何为每个.py-fi文件创建单独的zip文件
4 回答
如何为每个<li class=”“><a>找到最近的上述同级<li>?
6 回答
如何为每个CSV列生成特定的文件?
5 回答
如何为每个csv文件使用read_csv,即使它是空的?PythonPandas
10 回答
如何为每个CSV文件创建单独的Pandas数据帧并给它们起有意义的名称?
2 回答
如何为每个datetime和每个id创建一行?
7 回答
如何为每个Django型号选择赋予不同的颜色
4 回答
如何为每个Django模型实例安排一个周期性的芹菜任务?
10 回答
如何为每个Django视图设置一个装饰器?
5 回答
如何为每个for循环迭代分配变量
8 回答