Python | Appengine:我的代码中有什么bug阻止我将输出作为;欢迎,(此人的用户名)“;?
这绝对是个初学者的问题。我试图将输出作为“欢迎,(此人的用户名)”(比如,欢迎,John)。但我得到的结果只是“欢迎”。 任何帮助都是值得赞赏的Python | Appengine:我的代码中有什么bug阻止我将输出作为;欢迎,(此人的用户名)“;?,python,google-app-engine,Python,Google App Engine,这绝对是个初学者的问题。我试图将输出作为“欢迎,(此人的用户名)”(比如,欢迎,John)。但我得到的结果只是“欢迎”。 任何帮助都是值得赞赏的 import webapp2 from google.appengine.ext import db import os import jinja2 template_dir = os.path.join(os.path.dirname(__file__), 'templates') jinja_env = jinja2.Environment(lo
import webapp2
from google.appengine.ext import db
import os
import jinja2
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 Name(db.Model):
username = db.StringProperty(required=True)
class MainHandler(BaseHandler):
def get(self):
self.render('input.html')
def post(self):
username = self.request.get('username')
a = Name(username=username)
a.put()
self.redirect('/welcome')
class WelcomeHandler(BaseHandler):
def get(self):
username = self.request.get('username')
self.render('welcome.html', username = username)
application = webapp2.WSGIApplication([
('/', MainHandler),
('/welcome',WelcomeHandler)
], debug=True)
您的欢迎处理程序从未实际尝试从数据存储中提取数据。。。它从请求中获取用户名——如果您是通过重定向到达那里的,则类似于
self.redirect(“/welcome?username=…”)
当然,这不是你真正想要做的。通常,您需要在数据存储条目上附加某种句柄,以便稍后将其拉出。在这种情况下,您可能希望使用以下服务:
不确定你在最后一段中得到了什么:按键获取总是保证一致的。@DanielRoseman--是吗?很高兴知道。我从来都不理解“存储以实现强一致性”这一点我将在进一步研究的同时,暂时删除该评论。希望我能记得稍后再来解决…@DanielRoseman--ah。。。我想我现在相信你了——如果我理解正确的话,一个实体在它自己的实体组中,所以直接访问它总是非常一致的。任何get by键都是一致的,因为你不是通过索引访问的。它是否有祖先并不重要,正如你所说的,一个完全指定的键总是包含任何祖先。@TimHoffman——你是说“不一致”是由于实体索引的“缓慢”而产生的,未将实体复制到其他数据中心,以及后续请求可能无法在同一数据中心中处理?在这里学到了很多——很高兴我回答了这个问题:-)
from google.appengine.api import users
from google.appengine.ext import ndb # Note, I'm using ndb rather than db
class Name(ndb.Model):
username = ndb.StringProperty()
class MainHandler(BaseHandler):
def get(self):
self.render('input.html')
def post(self):
user = users.get_current_user()
username = self.request.get('username')
a = Name(id=user.id(), username=username)
a.put()
self.redirect('/welcome')
class WelcomeHandler(BaseHandler):
def get(self):
user = users.get_current_user()
key = ndb.key(user.id())
name_entity = key.get()
self.render('welcome.html', username=name_entity.username)