【问题标题】:formencode invalid return typeformcode 无效的返回类型
【发布时间】:2009-06-28 04:11: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

我们如何找到字段错误

【问题讨论】:

  • 这不是python语言问题,而是和一些web框架有关,请问是哪一种?
  • 对不起,我使用 django python 框架
  • 它看起来不像 django,我认为您在某些网络框架中使用了 formencode 表单验证库,例如挂架/涡轮齿轮箱?

标签: python error-handling webforms formencode


【解决方案1】:

我假设你使用的是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

【讨论】:

  • 你的意思是什么也显示错误,它显示一个字典,你可以从中得到任何字段错误,例如打印 e.unpack_errors()['first_name']
  • 好的,如果它满足你的需要,你可以选择它作为答案
  • 如果您点击问题右上角附近的向上箭头,您可以对答案进行投票,您可以通过点击复选/勾选标记来选择答案。
猜你喜欢
  • 2012-02-07
  • 2019-05-07
  • 2022-12-06
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 2018-05-31
  • 1970-01-01
相关资源
最近更新 更多