0

formweb.pyモジュールを使用している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.れるので、その行を解釈していて、実際に変更が加えられたことがわかります。

いくつかの異なる文字列を試しましたが、スペースなどを切り捨てているようです。スペース、改行、タブなどを追加することを除いて、すべてが正常に機能するように変更しました。

何が得られますか?

4

1 に答える 1

2

これがブラウザによるページの表示方法であり、cssの空白preをに変更しない限り、空白は1つのスペースと見なされます。

于 2012-10-07T08:19:40.660 に答える