【问题标题】:How does URL handling work in web.py?URL 处理如何在 web.py 中工作?
【发布时间】:2014-03-12 10:32:22
【问题描述】:

通过以下方式,我将“hello.py”和“goodbye.py”与相应的类(函数)绑定并且它可以工作。如果我转到“0.0.0.0:8080/hello.py”或“0.0.0.0:8080/goodbye.py”,我会看到我期望看到的。

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 中没有使用括号。

【问题讨论】:

  • 其实你为什么会有/hello.py或者/goodbye.py这样的URL呢?打字很不直观,不是吗?就像 Paul 提到的那样,您应该使用 /hello/goodbye 作为您的 URL。我对/hello.py 无法工作的猜测是浏览器可能将它作为.com 的一部分?我不太确定,错误信息是什么? 404 未找到?

标签: python web web.py


【解决方案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()

网址应该是这样的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 1970-01-01
    • 2021-10-13
    • 2012-12-19
    • 2019-05-30
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多