2012-02-28 3 views
1

私は最初のPythonコードをオンラインにしていく過程に入っています。 appweb.application(urls, globals())に割り当てると、正確にはどうなっていますか?また、form = web.input(name="Nobody", greet=None)という行は、hello_formという別のスクリプトの2つの入力フォームを参照していますが、その目的は何ですか?次の行でform.greetform.nameと呼んでいますが、それらはユーザー入力に基づいて作成された変数でなければなりません(まだname = "Nobody"と言っていますか?)。Pythonコードをオンラインにしてapp.pyスクリプトと混同する

import web 

urls = (
    '/hello', 'Index' 
) 

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

render = web.template.render('templates/', base="layout") 

class Index(object): 
    def GET(self): 
     return render.hello_form() 

    def POST(self): 
     form = web.input(name="Nobody", greet=None) 
     greeting = "%s, %s" % (form.greet, form.name) 
     return render.index(greeting = greeting) 

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

答えて

1
app = web.application(urls, globals()) 

appという名前の変数を作成し、それにweb.application()を呼び出した結果を格納します。つまり、Webアプリケーションオブジェクトを作成し、そのオブジェクトをappに格納します。どのユーザ指定の値を要求において提供されていない場合、すなわち、それらが使用される - nameここgreetに指定

form = web.input(name="Nobody", greet=None) 

値はデフォルト値です。

+0

説明ありがとうございます!私は何が間違っているのか分かりませんが、2行目を 'form = web.input()'に変更して壊してみましたが、何の違いもありませんでした。また、私のブラウザでは、最初のテキストボックスに何も入力しなければ、「誰もいない」ということはありません。それはちょうど空白です。 – ZCJ

+1

@ZCJブラウザがまだそのフォームの値(空の文字列)を送信しているので空白です。ブラウザが値を送信しないようにするには、ボックスを完全に削除する必要があります。 – Amber

+0

それでは、なぜ私はそこにデフォルト値を置くのですか? 'form'というweb.input()変数が存在するため、そこに入れています。彼らが表示される唯一の方法は、私がそのボックスを持っていなくても、あなたはなぜそれらをデフォルトとして必要とするのでしょうか? – ZCJ

関連する問題