来自app.py脚本的几行我不明白

时间:2012-02-28 20:33:28

标签: python html class render web.py

所以我在这里理解python正在将render变量分配给web.template.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 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我但你的混淆是name = "what"类型语法?这只是说函数,在这种情况下web.input采用了一个名为name的参数,您将其直接分配给"what"。与render.index(greeting = greeting)相同,它需要一个参数greeting,您可以在其中指定在greeting语句上方的行中计算的局部变量return的值。

因此,如果不查看该方法,我会说return render.index(greeting)render.index(greeting = greeting)无关。例如,这段代码取自here,但没有我刚注意到的无限循环:

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

然后你可以这样调用这个函数:

>>> multiprint()






>>> multiprint(1)


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

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

在最后一行中我们没有指定第一个参数n,但指定了txt。我也同意你的观点,greeting = greeting令人困惑。这似乎是一个可爱的小技巧,但我不太关心它。参数名称为greeting,与我们示例中的txt类似,局部变量为greeting。就个人而言,我会将局部变量命名为其他东西,然后有render.index(greeting = myGreetingText)或类似的东西。