【发布时间】:2014-12-01 04:46:58
【问题描述】:
你好我正在学习 webapp2 ,我怀疑是有三个页面 1: /blog 用于查看所有链接到其永久链接的博客 2:/blog/newpost 用于获取博客的新帖子,它仅包含标题和博客作为输入,而用户单击提交按钮时,它会重定向到某个永久链接(这有效!!!) 3:最后是 /blog/(somepermalink) 在第 2 步中用户被重定向到此页面
我的问题是第一页提供了所有创建的博客列表,当用户点击某个博客时,我想重定向到第 3 步,但不幸的是它给了我 404 错误 这是我的代码
class Handler(webapp2.RequestHandler):
def write(self, *a, **kw):
self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
class Blog(db.Model):
title = db.StringProperty(required = True)
blog = db.TextProperty(required = True)
created = db.DateTimeProperty(auto_now_add = True)
class MainPage(Handler):
def render_front(self, title="", blog="", error=""):
self.render("newpost.html", title=title, blog=blog, error=error)
def get(self):
self.render_front()
def post(self):
title = self.request.get("title")
blog = self.request.get("blog")
if title and blog:
a = Blog(title=title, blog=blog)
a_key = a.put()
#sleep is used because of replication lag time
sleep(0.1)
#redirect to some permalink
self.redirect("/blog/%d" % a_key.id())
else:
error = "both title and post are needed"
self.render_front(title, blog, error)
class BlogPostHandler(Handler):
def render_blog(self, title="", blogs=""):
blogs = db.GqlQuery("SELECT * FROM Blog ORDER BY created DESC")
self.render("blogpage.html", title=title, blogs=blogs)
def get(self):
self.render_blog()
class PermaLink(MainPage):
def get(self, blog_id):
s = Blog.get_by_id(int(blog_id))
self.render("blogpage.html", blogs = [s])
app = webapp2.WSGIApplication([('/blog',BlogPostHandler),
('/blog/newpost',MainPage),
('/blog/(\d+)', PermaLink)],
【问题讨论】:
-
显示带有博客链接或表单的 html。关于睡眠。索引一致性还有其他方法:cloud.google.com/developers/articles/…
-
下面的回答对你有帮助吗?
标签: google-app-engine python-2.7 webapp2