web.py / pythonpath 混淆

发布于 2024-10-15 11:45:17 字数 624 浏览 2 评论 0 原文

我正在尝试将 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"

但是,每当我运行应用程序时,我都会收到错误:

at /

有人能告诉我发生了什么事吗?

Im playing around with web.py as a lightweight web framework. Im having problems when i attempt to move the actual implementation of my page into a separate file instead of the root file. As a demonstration, My core.py file looks like this:

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()

ive moved my implementation into a file called index.py at the same level as core.py. My implementation looks like this:

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

however, whenever i run my application, i get an error:

<type 'exceptions.KeyError'> at /

can anybody tell me what is going on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

阳光①夏 2024-10-22 11:45:17

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

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

from index import index

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

According to http://webpy.org/tutorial3.en#urlhandling, web.py does a lookup for the classes you specified in your urls in the global namespace.

In your core.py there is no class named index (after you moved it), that's what causes this keyerror. In my test I could fix that by importing the index class in core.py.

from index import index

(I haven't used web.py before, so please correct me if I'm wrong)

日记撕了你也走了 2024-10-22 11:45:17

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

from controllers import *

urls = (
'/', 'controllers.file.index'
)

You can add dots to crawl into modules. So say you have a folder controllers with a file named file.py and you wanted to access the controller named index:

from controllers import *

urls = (
'/', 'controllers.file.index'
)
携君以终年 2024-10-22 11:45:17

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

I'm guessing the bug is in your template. I hit this error when if forgot a ':' on an if statement in my template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文