2012-02-28 3 views
1

は、だから私はここでのpythonがweb.template.renderするrender変数を代入していることを理解して理解していないが、私は実際にそれが英語でやっているものを得ることはありません。私のテンプレートディレクトリは「呼び出されました」(正しい単語ですか?)とlayout.htmlが何らかの形で使用されています。私はコードを壊そうとしていますが、それでもこの行がなくても動作します。私はこれを使用するように指示されており、それを理解していません。数行は、私は

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

次のクラスは、この程度の私には理にかなって:それに割り当てられたオブジェクトが原因で第二の機能のhello_form.htmlを返すとなり、それがプロンプトに入力されたものをユーザーに許可し、それらを返します(メソッド?)値。私は非常に深く、form可変ラインかreturnラインが何をしているのか分かりません。どんな助けや素早い翻訳が私に大きな助けになります、ありがとう!私が間違っている場合

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

    def POST(self): 
     form = web.input(name = "what", greet = "no response?") 
     greeting = "%s, %s" % (form.greet, form.name) 
     return render.index(greeting = greeting) 

答えて

1

は私を修正しますが、あなたの混乱はname = "what"タイプ構文ですか?これはちょうど、この場合はweb.inputという関数がnameというパラメータをとり、それを直接"what"に割り当てていると言います。 render.index(greeting = greeting)と同じですが、ローカル変数greetingの値を割り当てたgreetingというパラメータをとり、returnステートメントの上の行で評価されました。

この方法を見ないと、return render.index(greeting)render.index(greeting = greeting)と同じであるという保証はありません。例えばhereから取られたコードのこのスニペットを取るが、私はちょうど気づいた無限ループなし:私たちが行った最後の行で

>>> multiprint() 






>>> multiprint(1) 


>>> multiprint(1,"hi") 
hi 

>>> multiprint(txt="hi") 
hi 
hi 
hi 
hi 
hi 

# Default Values 
def multiprint(n=5, txt=""): 
    i = 0 
    while i < n: 
     print txt 
     i++ 

あなたは、この方法でこの関数を呼び出すことができます最初のパラメータであるnを指定しないで、txtを指定しました。私はまたgreeting = greetingが混乱していることに同意します。それはかわいい小さなトリックのようだが、私はそれほど気にしない。パラメータ名はgreetingです(例ではtxt)。ローカル変数はgreetingです。個人的には、ローカル変数に何か他のものを指定してから、render.index(greeting = myGreetingText)などの名前を付けていました。

+0

'return render.index(greeting)'は 'render render.index(greeting = greeting)'とは異なりますか?最初の 'greeting'が取られたパラメータだと言っていますが、' greeting'を実行すると、パラメータはローカル変数 'greeting'を参照していますか?この場合、 'return render.index(greetparam = greeting)'やそれに類するものを入力するほうがずっと混乱することはありません。 – ZCJ

関連する問題