我的代码是:
import webapp2
import re
form = """<html>
<form method=post>
<input name="username"><div id=div>%s</div><br>
<input name="password"><div id=div>%s</div><br>
<input name="verify"><div id=div>%s</div><br>
<input name="email"><div id=div>%s</div>
<input type="submit">
</form>
</html>"""
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
self.response.write(form % ('','','',''))
def reply(self,user,password,verify,email):
if not user and password and verify and email:
self.redirect('/broski')
else:
self.response.write(form % (user,password,verify,email))
def post(self):
self.usererror = ''
if not re.compile(r"^[a-zA-Z0-9_-]{3,20}$").match(self.request.get('username')):
self.usererror = "That's not a valid username."
self.passworderror = ''
if not re.compile(r"^.{3,20}$").match(self.request.get('password')):
self.passworderror = "That wasn't a valid password."
self.verifyerror = ''
if self.request.get('verify') != self.request.get('password') and self.request.get('password') != '':
self.verifyerror = "Your passwords didn't match."
self.emailerror = ''
if not re.compile(r"^[\S]+@[\S]+\.[\S]+$").match(self.request.get('email')):
self.emailerror = "That's not a valid email."
self.reply(usererror,passworderror,verifyerror,emailerror)
class ThankYo(webapp2.RequestHandler):
def get(self):
self.response.write('Welcome, ' + self.request.get('username')+'!')
app = webapp2.WSGIApplication([('/', MainPage),('/broski', ThankYo)],
debug=True)
这简直是我第一次为GAE(我对python还是个新手……)编写一个超过10行的代码,当然,他已经崩溃了。 我发现了几个错误,但绝对的帮助,因为该网站仍然没有甚至加载。 关于代码的帮助是非常感谢的。 更新:我更新了一点(更改了ThankYo的继承),现在表单成功加载,当我发布数据时,它当然崩溃了。。。你知道吗
应该是
(注意大写
P
)。你知道吗我通过查看终端中留下的错误消息发现了这一点:
也会改变
至
我通过查看终端错误消息再次发现了这一点:
如何查看错误消息(从终端):
启动GAE服务器有多种方法。我的方法是打开一个终端
然后终端会发出有用的错误消息。你知道吗
最后一个问题有点复杂。我们正在向
reply
方法发送错误消息:但是在
reply
方法定义中,我们称它们为user
、password
、verify
和email
。这会导致认知失调。让我们将它们重命名为usererror
、passworderror
、verifyerror
和emailerror
:现在要检查是否存在错误,请使用:
但是我们要重定向到的页面需要用户名! 如果我们重定向到
/broksi
:然后
ThankYo
处理程序不知道用户名是什么。self.request.get('username')
将显示为空(返回空字符串)。所以我们需要将用户名传递给broski
:所以代码最终是这样的:
相关问题 更多 >
编程相关推荐