Python 基于Web.Py的应用程序,启动w/o问题,在导航到url时抛出KeyError/&引用;

Python 基于Web.Py的应用程序,启动w/o问题,在导航到url时抛出KeyError/&引用;,python,web.py,Python,Web.py,我正在尝试让我的一个麻烦的python应用程序工作。我刚刚通过@unutbu的帮助克服了一个问题 我的下一个问题碰巧有点奇怪,堆栈跟踪显示与我的代码无关: Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 239, in process return self.handle()

我正在尝试让我的一个麻烦的python应用程序工作。我刚刚通过@unutbu的帮助克服了一个问题

我的下一个问题碰巧有点奇怪,堆栈跟踪显示与我的代码无关:

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 239, in process
    return self.handle()
  File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 230, in handle
    return self._delegate(fn, self.fvars, args)
  File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 419, in _delegate
    cls = fvars[f]
KeyError: u'Home'
我唯一调用web.py函数的脚本是:

#Application/App.py
import web
class AppInstance(object):
    def __init__(self):
        from Views import Home
        self.urls = (
                "/", "Home",
                )
        self.app = web.application(self.urls, globals())
    def run(self):
        self.app.run()
这家伙是从文件系统中上层目录的脚本调用的:

#start.py
from Application import App
app = App.AppInstance()
app.run()
如果您愿意,我可以从上面提到的问题中复制目录布局的外观,但我现在不这么做,因为它会在这里造成很多混乱(tree命令的输出)。我的问题是:如何在对目录结构进行最小更改的情况下解决此问题?
我认为添加应用程序的目录结构应该对那些想要帮助/可能阅读本文以解决自己问题的人有所帮助

Blog/
├── Application/
│   ├── App.py
│   └── __init__.py
|
├── Engine/
│   ├── Connection/
│   │   ├── __init__.py
│   │   └── MySQLConnection.py
│   ├── Errors.py
│   └── __init__.py
├── __init__.py
├── Models/
│   ├── BlogPostModel.py
│   └── __init__.py
├── start.py
└── Views/
    ├── Home.py
    └── __init__.py
这件事刚刚开始,目的是提供一个博客引擎,并帮助我实现我今天学到的东西,以获得一些完整和有用的东西。

第二个参数必须是潜在处理程序的字典。在本例中,您希望
Home
位于其中,但该绑定仅在局部变量中。调用而不是全局调用:

import web
class AppInstance(object):
    def __init__(self):
        from Views import Home
        self.urls = (
                "/", "Home",
                )
        self.app = web.application(self.urls, locals())
        #                                     ^^^^^^
    def run(self):
        self.app.run()
或移动导入:

import web
from Views import Home # <-- Moved into global namespace
class AppInstance(object):
    def __init__(self):
        self.urls = (
                "/", "Home",
                )
        self.app = web.application(self.urls, globals())
    def run(self):
        self.app.run()
导入web

从视图导入主页#“Home”不应该存在于globals中吗?@bereal Home.py位于文件夹“Views”中,该文件夹与应用程序处于同一级别。我的猜测是,不知何故,web.py在到达课堂时遇到了问题。为了更好地表达这个问题,我将添加目录结构。我的眼睛越来越模糊,我已经花了5个多小时试图弄明白这件事。非常感谢!我简直不敢相信我花了一天的时间去追逐这么明显的东西:)我已经升级到了我应用程序中的下一个bug。