【问题标题】:How can I do form valitation feedback in web.py如何在 web.py 中进行表单验证反馈
【发布时间】:2012-05-10 08:25:27
【问题描述】:

我想用html写表单,比如

form    
    input type.....   
    input type.....    

然后在py中写这个:

f = forms.register_form()
if not f.validates():
    return render.register(f)

问题是,如果表单没有通过验证,我如何将信息反馈给用户。 有没有类似#springbind 的速度?

【问题讨论】:

  • 请修正您问题的格式。不要使用 HTML,而是通过缩进 4 个空格将代码标记为代码。

标签: python forms web.py


【解决方案1】:

让我用我的 web.py 项目中的 sn-p 来回答:

bookeditform = form.Form(
    form.Textbox('title', form.notnull),
    form.Textbox('author', form.notnull),
    form.Textbox('year', 
        form.Validator('Must be a number', lambda x: not x or int(x) > 0)),
)

# ...

class NewBookHandler:
    def GET(self):
        f = bookeditform()
        return render.bookedit(f, "New book")

    def POST(self):
        f = bookeditform()
        if f.validates():
            newid = db.insert('book', title=f.d.title, 
                              author=f.d.author, year=f.d.year)
            raise web.seeother('/book/%s' % newid)
        else:
            return render.bookedit(f, "New book")

回顾:

  • 在处理程序中,在GET 上,只需呈现空表单。
  • POST 上,加载表单并检查其是否有效。
    • 如果是,请执行所需的操作,并将用户重定向到成功页面。永远不要在 POST 上渲染任何内容,因为用户可以刷新页面,重新执行相同的操作。
    • 如果没有,请重新呈现表单(它将包含输入的数据,并且会显示错误消息)。

【讨论】:

  • 它没有向我显示任何错误消息。该怎么办 ?请帮助
  • @krishna222,我将form.notnull 作为某些表单字段的验证器,$:form.render() 实际上在标有notnull 的字段上显示“必填”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多