2014-03-12 68 views
1

通過以下方式,我將「hello.py」和「goodbye.py」與相應的類(函數)綁定在一起,它可以工作。如果我去「0.0.0.0:8080/hello.py」或「0.0.0.0:8080/goodbye.py」,我會看到我期望看到的。如何在web.py中處理URL?

import web 

urls = ('/(hello.py)', 'hello', '/(goodbye.py)', 'goodbye') 

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

class hello: 
    def GET(self, name): 
     if not name: 
      name = 'World' 
     return 'Hello, ' + name + '!' 

class goodbye: 
    def GET(self, name): 
     if not name: 
      name = 'World' 
     return 'Goodbye, ' + name + '!' 

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

但是,我不明白爲什麼我需要使用括號。如果我用'/hello.py'代替'/(hello.py)',它不起作用。但是,在示例here中不使用括號。

+1

其實,爲什麼你有網址,如'/ hello.py'或'/ goodbye.py'?打字不是很直觀,不是嗎?就像Paul提到的那樣,你應該爲你的URL使用'/ hello'或'/ goodbye'。我對'/ hello.py'無法工作的猜測是,瀏覽器可能將它作爲'.com'的一部分?我不太確定,錯誤信息是什麼? 404找不到? – maverick97

回答

1

,從我看到(我不知道web.py太清楚)的get參數不應該傳遞作爲方法的參數,而是通過web.input方法獲得的,像這樣的例子:

import web 

urls = (

    '/SomePageHello','SomePageHello', 
    '/SomePageGoodbye','SomePageGoodbye', 


    ) 

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

class SomePageHello: 
    def GET(self): 
     user_data = web.input(name="no data") 
     return "<h1> Hello " + user_data.name + "</h1>" 

class SomePageGoodbye: 
    def GET(self): 
     user_data = web.input(name="no data") 
     return "<h1> Goodbye " + user_data.name + "</h1>" 



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

URL應該是這樣的:

http://127.0.0.1:8081/SomePageHello?name=dasfasd