web.py表单验证格式

时间:2012-10-07 05:19:22

标签: web.py

我正在关注使用web.py form模块的web.py教程。基本上,这个小应用程序创建一个由文本框组成的表单,进行一些验证以确保它是一个数字并且它大于10,并确定该数字是奇数还是偶数。我会在问题之前发布代码,因为它会更容易理解。

code.py

import web
from web import form

urls = (
  '/', 'hello')

number_form = form.Form( 
    form.Textbox('number',
             form.notnull,
             form.regexp('^-?\d+$', 'Not a number.'),
             form.Validator('Not greater than 10.', lambda x: int(x)>10),
             description='Enter a number greater than 10:'
             ))

app = web.application(urls, globals(), autoreload=True)

render = web.template.render('templates/')

class hello:
    def GET(self):
        my_form = number_form()
        return render.hello(my_form)

    def POST(self): 
        my_form = number_form() 
        if not my_form.validates(): 
            return render.hello(my_form)
        else:
            number = my_form['number'].value
            if int(number) % 2:
                return "Your number %s is odd." % number
        else:
            return "Your number %s is even." % number

if __name__ == "__main__":
    app.run()

hello.html的

$def with (form)
<form name="test" method="POST"> 
$if not form.valid: <p><b>Sorry, your input was invalid.</b></p> 
$:form.render()
<input type="submit" value="Go" />
</form>

现在,我的问题是关于创建number_form时定义的验证器。如果我要换行:

form.regexp('^-?\d+$', 'Not a number.'),

类似于:

form.regexp('^-?\d+$', 'Not          a           number.'),

输出不会改变!如果验证失败,它仍然只是说Not a number.。但如果我将其更改为:

form.regexp('^-?\d+$', 'NOT A NUMBER.'),

它显示NOT A NUMBER.,所以我知道它正在解释该行,而我的更改实际上已经完成了。

我尝试了几个不同的字符串,它似乎是截断空格或其他东西;除了添加空格,换行符,标签等内容之外,我已将其改为一切正常。

是什么给出了?

1 个答案:

答案 0 :(得分:2)

浏览器如何显示您的网页,它会将任何空格视为一个空格,除非您将css中的white-space更改为pre