所以我在这里理解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)
答案 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)
或类似的东西。