我遇到了障碍。事实上,另一名学生Ahmad在同一时间遇到了类似的障碍。到目前为止,我们还没有得到Udacity论坛的回答,所以我想我会在这里交叉发帖,希望尽快得到帮助。问题出现在这里:Web Development - Lesson 2 - More Handlers。 (如果您未登录,该链接可能无效。)
到目前为止,我们俩都做得很好并取得了进展,但是从现在开始,事情就会停止,我们都被困住了。这是我回到艾哈迈德的最后一篇文章:
我在MS Word中将你的日志与我的比较。当您摆脱时间,字体和文件路径等问题时,会有一些差异。我们都得到了:
警告api_server.py:331]无法初始化图像API;你很可能错过了Python“PIL”模块。
和
错误wsgi.py:262]
我们的追溯几乎相同
追踪(最近一次通话): 文件“C:\ Program Files \(x86)\ Google \ google_appengine \ google \ appengine \ runtime \ wsgi.py”,第239行,处理中 handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) _LoadHandler中的文件“C:\ Program Files \(x86)\ Google \ google_appengine \ google \ appengine \ runtime \ wsgi.py”,第298行 handler,path,err = LoadObject(self._handler) 在LoadObject中的文件“C:\ Program Files \(x86)\ Google \ google_appengine \ google \ appengine \ runtime \ wsgi.py”,第84行 obj = 导入(路径[0])
但我们有不同的表单操作
(/<form action ="/testform, TestHandler)],">
我有一件事你没有
警告2013-12-09 18:18:41,795 simple_search_stub.py:1018]无法从c:\ users \ appdata \ local \ temp \ appengine.udacity7676 \ search_indexes
读取搜索索引
那么我们从哪里开始呢?我不知道,但我确实有很多问题,我希望有人可以并且会回答:
MainHandler
,他们有MainPage
,我注意到了
以前,但我认为这不重要。我的来了
用这个名字,我没有创造它。out
,与self.response.out.write(form)
一样。这不在我的默认文件中。我只有self.response.write(form)
。答案 0 :(得分:2)
(/<form action ="/testform, TestHandler)],">
看起来不正确。
它应该只是<form action="/testform">
。
PIL
库对于GAE来说根本不是必需的(至少在你的情况下)。因此,它只是一个警告,您可以忽略它。 (它与你的错误无关)
如果您在最后MainHandler
声明中使用了正确的处理程序MainPage
,则class
替换为app
完全没有问题。像,
app = webapp2.WSGIApplication([('/', MainPage),
('/testform', TestHandler)],
debug=True)
此外,间距并不重要,但块中放置三引号字符串很重要。 e.g。
form =
"""
<form action="/testform">
<input name="q"> <input type="submit">
</form>
"""
会给出错误,但是,
form = """
<form action="/testform">
<input name="q"> <input type="submit">
</form>
"""
这样可以正常工作。
至于你们两个面临的实际问题,如果我无法查看代码,我无法帮助你。如果你想在Udacity论坛上继续讨论,那对我来说很好,但是,发布一个链接&amp;我会看到我能做些什么。
更新 - 您似乎错过了添加逗号来分隔URL-Handlers声明中的元组。您的代码看起来像
app = webapp2.WSGIApplication([('/', MainPage)
('/testform', TestHandler)]
debug=True)
虽然它应该是
app = webapp2.WSGIApplication([('/', MainPage), # <-- comma at the end of line
('/testform', TestHandler)], # <-- comma before hash
debug=True)
答案 1 :(得分:0)
INFO 2013-12-15 21:18:40,151 module.py:617] default: "GET / HTTP/1.1" 500 - INFO 2013-12-15 21:18:40,190 module.py:617] default: "GET /favicon.ico HTTP/1.1" 304 - ERROR 2013-12-16 03:18:48,500 wsgi.py:262] Traceback (most recent call last): File "C:\...\appengine\runtime\wsgi.py", line 239, in Handle handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) File "C:\...\appengine\runtime\wsgi.py", line 298, in _LoadHandler handler, path, err = LoadObject(self._handler) File "C:\...\appengine\runtime\wsgi.py", line 84, in LoadObject obj = __import__(path[0]) File "C:\...\udacity7676\main.py", line 18, in <module> ('/testform', TestHandler)], TypeError: 'tuple' object is not callable INFO 2013-12-15 21:18:48,512 module.py:617] default: "GET / HTTP/1.1" 500 -
我猜测处理程序名称没有对齐,这就是问题所在,但我宁愿在盲目前进之前得到您的反馈。我也猜测元组因同样的原因而无法调用。但我不记得任何修改wsgi.py
的说明。我还猜想,favicon错误会发生在 PIL 问题上。