formencode 无效的返回类型

0 投票
1 回答
652 浏览
提问于 2025-04-15 12:32

如果在表单编码时发生了异常,那么返回的类型会是什么呢?

假设

if(request.POST):
        formvalidate = ValidationRule()
        try:
            new = formvalidate.to_python(request.POST)
            data = Users1( n_date = new['n_date'], heading = new['heading'], 
                           desc = new['desc'], link = new['link'], 
                           module_name = new['module_name'] )
            session.add(data)
            session.commit()
        except formencode.Invalid, e:
            errors = e

我们该如何找到每个字段的错误呢?

1 个回答

3

我猜你正在使用 formencode(http://formencode.org)这个工具。

你可以用 unpack_errors 来获取每个字段的错误信息,比如:

import formencode
from formencode import validators

class UserForm(formencode.Schema):
    first_name = validators.String(not_empty=True)
    last_name = validators.String(not_empty=True)

form = UserForm()
try:
    form.to_python({})
except formencode.Invalid,e:
    print e.unpack_errors()

这样会打印出一个包含每个字段错误的字典。

你还可以使用 formencode.htmlfill.render 来以不同的方式显示所有错误,具体可以查看这里:http://formencode.org/htmlfill.html#errors

撰写回答