[英]Rot13 Example: How do I run this piece code in Google App Engine?
I'm having trouble running the code below. 我在运行下面的代码时遇到问题。
The code should work (it's a Udacity source code solution for a problem set). 代码应该可以工作(这是针对问题集的Udacity源代码解决方案)。 It should run on Google App Engine.
它应在Google App Engine上运行。
In my terminal, I navigate to the hw2 folder which contains the following files at ~/python-docs-samples/appengine/standard 在我的终端中,我导航到hw2文件夹,该文件夹包含〜/ python-docs-samples / appengine / standard中的以下文件
Then I run 然后我跑
dev_appserver.py .
However, I get a 404 error when I load the page at localhost:8080 但是,我在localhost:8080加载页面时收到404错误
It works fine for a 'Hello World' example in ~/python-docs-samples/appengine/standard 它适合〜/ python-docs-samples / appengine / standard中的“ Hello World”示例
What am I doing wrong here? 我在这里做错了什么? Thanks
谢谢
import os
import re
from string import letters
import webapp2
import jinja2
from google.appengine.ext import db
template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
autoescape = True)
def render_str(template, **params):
t = jinja_env.get_template(template)
return t.render(params)
class BaseHandler(webapp2.RequestHandler):
def render(self, template, **kw):
self.response.out.write(render_str(template, **kw))
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
class Rot13(BaseHandler):
def get(self):
self.render('rot13-form.html')
def post(self):
rot13 = ''
text = self.request.get('text')
if text:
rot13 = text.encode('rot13')
self.render('rot13-form.html', text = rot13)
USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
def valid_username(username):
return username and USER_RE.match(username)
PASS_RE = re.compile(r"^.{3,20}$")
def valid_password(password):
return password and PASS_RE.match(password)
EMAIL_RE = re.compile(r'^[\S]+@[\S]+\.[\S]+$')
def valid_email(email):
return not email or EMAIL_RE.match(email)
class Signup(BaseHandler):
def get(self):
self.render("signup-form.html")
def post(self):
have_error = False
username = self.request.get('username')
password = self.request.get('password')
verify = self.request.get('verify')
email = self.request.get('email')
params = dict(username = username,
email = email)
if not valid_username(username):
params['error_username'] = "That's not a valid username."
have_error = True
if not valid_password(password):
params['error_password'] = "That wasn't a valid password."
have_error = True
elif password != verify:
params['error_verify'] = "Your passwords didn't match."
have_error = True
if not valid_email(email):
params['error_email'] = "That's not a valid email."
have_error = True
if have_error:
self.render('signup-form.html', **params)
else:
self.redirect('/unit2/welcome?username=' + username)
class Welcome(BaseHandler):
def get(self):
username = self.request.get('username')
if valid_username(username):
self.render('welcome.html', username = username)
else:
self.redirect('/unit2/signup')
app = webapp2.WSGIApplication([('/unit2/rot13', Rot13),
('/unit2/signup', Signup),
('/unit2/welcome', Welcome)],
debug=True)
The following code defines the request handlers for the corresponding URL patterns: 以下代码定义了相应URL模式的请求处理程序:
app = webapp2.WSGIApplication([('/unit2/rot13', Rot13),
('/unit2/signup', Signup),
('/unit2/welcome', Welcome)],
debug=True)
Notice that you do not have a handler for /
or a catch all. 请注意,您没有
/
或全部捕获的处理程序。 This is why you're getting an HTTP 404
error. 这就是为什么您会收到HTTP
404
错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.