2

我把 web.py 作为一个轻量级的 web 框架玩弄。当我尝试将页面的实际实现移动到单独的文件而不是根文件时遇到问题。作为演示,我的 core.py 文件如下所示:

import web, sys, os
sys.path.append(os.path.abspath(os.path.dirname(__file__)))


urls = (
    '/', 'index'
)

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

render = web.template.render('templates/')

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

我将我的实现移动到与 core.py 处于同一级别的名为 index.py 的文件中。我的实现如下所示:

class index:
    def GET(self):
        return "Hello world"

但是,每当我运行我的应用程序时,都会出现错误:

<type 'exceptions.KeyError'> at /

谁能告诉我发生了什么事?

4

3 回答 3

4

根据http://webpy.org/tutorial3.en#urlhandling,web.py 会在全局命名空间中查找您在 url 中指定的类。

在你的 core.py 中没有名为 index 的类(在你移动它之后),这就是导致这个 keyerror 的原因。在我的测试中,我可以通过在 core.py 中导入索引类来解决这个问题。

from index import index

(我之前没用过web.py,如有错误请指正)

于 2011-02-03T23:05:21.147 回答
3

您可以添加点以爬入模块。假设您有一个文件夹控制器,其中包含一个名为 file.py 的文件,并且您想访问名为 index 的控制器:

from controllers import *

urls = (
'/', 'controllers.file.index'
)
于 2011-02-03T23:10:27.023 回答
0

我猜这个错误在你的模板中。如果在我的模板中的 if 语句上忘记了“:”,我遇到了这个错误。

于 2014-12-11T01:10:00.870 回答