html报告错误,使用Deform在HTML控件中报告表单后处理错误消息
Deform允许在表单的不同字段上添加验证.但是,它会检查表单本身是否有效,但这并不一定意味着表单处理有效.
例如,如果表单用于创建具有电子邮件地址的新用户.表单有效但表单处理(包括将此新用户插入数据库)会引发数据库完整性错误,表示已有用户使用此电子邮件地址.
我知道我可以添加一个特殊的验证器,用于检查电子邮件是否尚未使用但是仍然可能存在另一个并发事务,该事务具有在检查和第一个事务的提交之间提交的相同电子邮件,这不是100%安全的结束.
那么,我怎样才能很好地向用户报告表单处理后错误?
我可以轻松地报告表单旁边的错误消息(flash消息或其他),但我想知道是否有办法直接在小部件中报告错误,就像处理正常的验证错误一样.
解决方法:
我遇到了同样的情况,这就是我如何将错误提升为正常的验证错误.
验证方法:
def user_DoesExist(node,appstruct):
if DBSession.query(User).filter_by(username=appstruct['username']).count() > 0:
raise colander.Invalid(node, 'Username already exist.!!')
架构:
class UserSchema(CSRFSchema):
username = colander.SchemaNode(colander.String(),
description="Extension of the user")
name = colander.SchemaNode(colander.String(),
description='Full name')
extension = colander.SchemaNode(colander.String(),
description='Extension')
pin = colander.SchemaNode(colander.String(),
description='PIN')
视图:
@view_config(route_name='add_user', permission='admin', renderer='add_user.mako')
def add_user(self):
schema = UserSchema(validator = user_DoesExist).bind(request=self.request)
form = deform.Form(schema, action=self.request.route_url('add_user'), buttons=('Add User','Cancel'))
if 'Cancel' in self.request.params:
return HTTPFound(location = self.request.route_url('home'))
if 'Add_User' in self.request.params:
appstruct = None
try:
appstruct = form.validate(self.request.POST.items())
except deform.ValidationFailure, e:
log.exception('in form validated')
return {'form':e.render()}
希望这会帮助你.
谢谢.
标签:python,pyramid,deform,colander
来源: https://codeday.me/bug/20190709/1410229.html
html报告错误,使用Deform在HTML控件中报告表单后处理错误消息相关推荐
- 037——VUE中表单控件处理之表单修饰符:lazy/number/trim
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- HTML基本语法之表单标签:表单的组成 ,表单域,表单控件元素(表单元素) ,input表单元素, label标签, 表单控件(表单元素), select表单元素, textarea表单元素
文章目录 表单标签 表单的组成 表单域 常用属性: 表单控件元素(表单元素) input表单元素 label标签 表单控件(表单元素) select表单元素 textarea表单元素 表单元素几个总结 ...
- js 拖拽生成html,js拖拽插件 js 拖拽控件生成自定义表单 怎么实现
想请教一个js的问题,拖拽控件 js 拖拽控件生成自定义表单 怎么实现 说说步骤吧 监听mousedown事件 - 获取鼠标点击元素,判断是否可拖拽 - 设置flag做标记 - 建一个tempDOM, ...
- 下面哪些是html的表单控件,下列属于表单控件的是
下面关于表单控件基本操作的陈述中,哪个是正确的 下面关于表单控件基本操作的陈述中,哪个是正确的 搜索资料 我来答 分享 微信扫一扫 网络繁忙请稍后重试 新浪微博 QQ空间 举报 浏览14 次 本地图 ...
- 一起学asp.net基础文章二 服务器控件、客户端控件和html表单控件
首先解释一下这两个控件个概念. 所谓服务器控件 就是微软官方提供的如 textbox label dropdownlist等可以直接添加事件,属性 操作方式和winform类似的.net控件. 1.使 ...
- android tible控件_android自定义表单,表格控件TableRowTextView
先上图: TableRowTextView----单元格宽度自适应[app:cell_mode="wrapContent"] 单元格宽度属性[app:cell_mode=wrapC ...
- JS对象迭代、事件处理器、表单控件绑定、表单复选框、表单单选按钮
JS对象迭代 知识点 v-for v-for 循环JS对象,把对象内容循环显示到页面上. <div id="myApp"><h1>JS对象迭代</h1 ...
- 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(4)--监控含图片控件的Products表单...
如本章节前面提到的,你的IPFS表单表现没有你想象的好有很多可能的原因.一个最明显的原因是表单产生太多通信量(因为表单产生的HTML的大小).在许多你使用了大型.笨拙表单的许多方法中,最常见的是让用户 ...
- excel 表单控件 按钮_Excel表单控制按钮怪癖
excel 表单控件 按钮 If you're building an Excel workbook for other people to use, you can add form control ...
最新文章
- mysql 查看数据库占用空间的大小
- Vbs脚本编程简明教程之十
- TCP listen()函数内幕
- Qt Creator创建自定义效果和材质
- 博客园在升级的路上,不妨更自信些,同时说说我们可以为博客园做些什么
- lua 从一串数字中取出偶数位的数字_为什么JavaScript中 0.1 0.2 不等于0.3?
- SQL Server中行列转换 Pivot UnPivot (转载)
- hive入ES5.6.8
- LaTeX设置参考文献条目行距以及条目内行距的方法
- 计算机视觉目标检测算法总结5——RCNN系列算法
- 小说和散文在写作语言(表达方式等)方面究竟有多大不同?
- 数据分析师必学第一课:构建完整的指标体系
- c++ map 析构函数_面向偷懒的编程 - C/C++项目中使用Go的分布式系统库
- error LNK2005
- NLP-文本挖掘-综述
- db2 matlab实现,MATLAB MIMO-OFDM无线通信技术及 实现一书的源码和配套英文书267万源代码下载- www.pudn.com...
- 我们应如何迎接新式客服业到来?
- Huffman树(哈夫曼树)
- 计算起始时间与结束时间之间有哪些月份和周数
- CorelCAD 2019.5 v19.1.1.2035破解版下载【Win+Mac+注册机】