2012-10-07 31 views
0

我正在關注使用web.py form模塊的web.py教程。基本上,這個小應用程序創建一個由文本框組成的表單,進行一些驗證以確保它是一個數字,並且它大於10,並確定該數字是奇數還是偶數。我會在問題之前發佈代碼,因爲它會更容易理解。web.py表單驗證格式化

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.,所以我知道它是解釋這一行,而且我的變化居然拿了。

我已經嘗試了幾個不同的字符串,它似乎是截斷空間或東西;我已經改變它的一切工作正常,除了添加像空格,換行符,標籤等東西。

什麼給?

回答

2

這就是瀏覽器如何顯示您的頁面,它認爲任何空格爲一個空格,除非您將css中的white-space更改爲pre