我目前在Udacity的CS253(网络开发)课程,我正在通过第二个作业项目(ROT13)网站。我注意到了这个讲座,我认为我对文件naisho.py
中的代码有很好的掌握,这里是:
import webapp2
import codecs
import cgi
form = """
<form method="post">
Tell me a secret...
<br>
<input type="text" name="secret" value="%(secret)s">
<div style="color: red">%(error)s</div>
<br>
<br>
<input type="submit">
</form>
"""
class MainPage(webapp2.RequestHandler):
def process(s):
return codecs.encode(s, "rot_13")
def escape(s):
return cgi.escape(s, quote = True)
def write_form(self, error="", secret=""):
self.response.out.write(form % {"error": error,
"secret": escape(secret)})
def get(self):
#self.response.headers['Content-Type'] = 'text/plain'
self.write_form()
#self.response.headers['Content-Type'] = 'text/plain'
#self.response.write(self.request)
def post(self):
self.redirect('/thanks')
class ThanksHandler(webapp2.RequestHandler):
def get(self):
n = process(secret)
self.response.out.write(n)
def escape(s):
return cgi.escape(s, quote = True)
application = webapp2.WSGIApplication([
('/', MainPage), ('/thanks', ThanksHandler)], debug=True)
提供了和文件app.yaml
:
application: naisho
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /.*
script: naisho.application
我导航到终端中的文件夹(我使用OSX 10.9.3),输入dev_appserver.py --port=9999 .
加载localhost:9999
,但是当我将其加载到浏览器中时会得到一个空白页面。我完全不知道为什么。有人能指出我正确的方向,并可能指出我更好地诊断这些事情的参考方向?亲切地感谢大家。
答案 0 :(得分:0)
首先,您的代码包含一些错误和缩进问题。
错误是转义和进程是类的方法,因此它们应该包含self作为它们的第一个参数,并被称为self.escape或self.process。另一种方法是将这些方法作为函数移出类。
一旦你这样做,在控制台中你不应该看到Stack Traces中隐藏的任何错误,除了恼人的303错误。
无论出于何种原因,我在开发服务器上运行时也会遇到303错误,但如果将其部署到App Engine实例,则可以顺利运行。
您可以尝试首先部署到App Engine,并查看他们的日志以捕获您的错误/缩进,因为它可以更容易发现它们。