2012-02-28 57 views
1

因此,我正在将我的一些第一次Python代码在线,我对某些事情有点模糊。当我们将app分配给web.application(urls, globals())时,究竟发生了什么?此外,行form = web.input(name="Nobody", greet=None)指的是我的另一个脚本hello_form中的两个输入表单,但其用途是什么?我们在下一行看到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中。

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

name用于和greet这里指定的值是缺省 - 即,如果在请求中没有用户指定的值的那些中使用。

+0

感谢您的解释!我不知道我在做什么错,但我试图通过改变它来打破第二行:'form = web.input()',它没有任何区别。同样在我的浏览器中,如果我不在第一个文本框中输入任何内容,它不会提供“Nobody”;它只是空白。 – ZCJ 2012-02-28 08:33:22

+1

@ZCJ这是空白的,因为你的浏览器仍然在为该表单提交一个值(一个空字符串)。您必须完全删除该框才能让浏览器不提交任何值。 – Amber 2012-02-28 08:35:29

+0

那么为什么我会把那些默认值放在那里呢?我把它们放在那里,因为存在名为'form'的web.input()变量。既然他们可以展示的唯一方法是,如果我甚至没有那个盒子,为什么你需要它们作为默认? – ZCJ 2012-02-28 08:52:01