我正在关注使用 web.pyform
模块的 web.py 教程。基本上,这个小应用程序创建了一个由文本框组成的表单,进行一些验证以确保它是一个数字并且它大于 10,并确定该数字是奇数还是偶数。我会在问题之前发布代码,因为它更容易理解。
代码.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()
你好.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.
,所以我知道它正在解释该行,并且我的更改实际上已经发生了。
我尝试了一些不同的字符串,似乎它正在截断空格或其他东西;除了添加空格、换行符、制表符等之外,我将其更改为一切正常。
是什么赋予了?