python-GAE中的请求处理程序和app.yaml
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-GAE中的请求处理程序和app.yaml,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3093字,纯文字阅读大概需要5分钟。
内容图文
![python-GAE中的请求处理程序和app.yaml](/upload/InfoBanner/zyjiaocheng/676/092e91f95135470a912bdfa4ece7d302.jpg)
我是一名刚出生的婴儿程序员,发现我对GAE不太了解.
我的app.yaml设置可以路由到单独的应用
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /unit3.*
script: unit3.app
- url: /birthday.*
script: birthday.app
- url: /signup.*
script: signup.app
- url: /rot13.*
script: rot13.app
- url: .*
script: main.app
然后在signup.app内部-WSGI在简单的帖子请求后将人们重定向到欢迎页面
import webapp2
import jinja2
import os
import re
template_dir=os.path.join(os.path.dirname(__file__), 'templates')
jinja_env= jinja2.Environment(loader= jinja2.FileSystemLoader(template_dir), autoescape = True)
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)
def render_str(template,**parms):
t = jinja_env.get_template(template)
return t.render(parms)
class BaseHandler(webapp2.RequestHandler):
""" a BaseHandler object to render and write """
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 SignUpHandler(BaseHandler):
def get(self):
self.render('signup.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['name_error']='that is not a valid name'
have_error=True
if not valid_password(password):
params['password_error']=('that is not a valid password')
have_error=True
elif password != verify:
params['verify_error']='your passwords dont match'
have_error=True
if not valid_email(email):
params['email_error']='that is not a valid email address'
have_error=True
if have_error:
params['message']=('Please type your info in again ' + username)
self.render('signup.html', **params)
else:
self.redirect('welcome?username=' + str(username))
class WelcomeHandler(BaseHandler):
def get(self):
username = self.request.get('username')
if valid_username(username):
self.render('welcome.html', username = username)
else:
self.redirect('signup')
app = webapp2.WSGIApplication([('/signup',SignUpHandler),
('/welcome',WelcomeHandler)]
,debug=True)
虽然WelcomeHandler找不到模板化的html文件,但我得到了404.
基本上,对于通过RequestHandler路由的任何内容,我都会得到此404.
我敢肯定,这是我忽略的一个基本误会,无法通过Google搜索轻松纠正.
我是否需要路由.yaml中的所有内容?当我只有通用URL处理程序时,为什么不是这种情况?
解决方法:
您需要将/welcome.*路由添加到您的app.yaml,以便signup.app为其提供服务.
另外,如果我提出建议.您目前仅在signup.app中支持/ signup和/ welcome路由:
app = webapp2.WSGIApplication([('/signup',SignUpHandler),
('/welcome',WelcomeHandler)]
,debug=True)
但您要在app.yaml中路由所有/signup.*.因此,如果将/ signup /发送到此WSGI处理程序并导致404.请不要在app.yaml中添加显式路径,在main.app的“全部使用”中添加404处理程序,或者添加404处理程序每个子模块中的全部.
内容总结
以上是互联网集市为您收集整理的python-GAE中的请求处理程序和app.yaml全部内容,希望文章能够帮你解决python-GAE中的请求处理程序和app.yaml所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。