gpt4 book ai didi

python - 请求处理程序和 GAE 中的 app.yaml

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:55 25 4
gpt4 key购买 nike

我是一个刚出生的程序员,我发现我对 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。

我很确定这是我忽略的基本误解,无法通过谷歌搜索轻松纠正。

我是否需要路由 .yaml 中的所有内容?当我只有通用 URL 处理程序时,为什么不是这种情况?

最佳答案

您需要添加 /welcome.*通往您的 app.yaml 的路线所以它由 signup.app 提供服务.

另外,如果我提出建议。您目前仅支持路线 /signup/welcomesignup.app :

app = webapp2.WSGIApplication([('/signup',SignUpHandler),
('/welcome',WelcomeHandler)]
,debug=True)

但是你正在路由所有/signup.*app.yaml .所以如果/signup/将被发送到此 WSGI 处理程序并将导致 404。不是这样做,而是在 app.yaml 中添加显式路径。和一个 404 处理程序在你的包罗万象中 main.app或者在每个子模块中添加一个 404 处理程序包罗万象。

关于python - 请求处理程序和 GAE 中的 app.yaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com