Google App Engine + Jinja2:使用带有参数的self.redirect()

时间:2014-01-02 19:06:11

标签: google-app-engine python-2.7 jinja2 app-engine-ndb webapp2

假设我有Book ndb.Model class.

class Book(ndb.Model):
    title = ndb.StringProperty(required = True)

Book 实体由此处理程序创建:

     def get(self):
         self.render('new-book.html')

     def post(self):
          title = self.request.get('title')

         if title:
            b = Book(title = title)
            b.put()
            self.redirect('/book/%s' % str(b.key.id()))

创建图书实体后,我们会被重定向到/book/[book id]。在这个页面上,我想包含一条消息,上面写着“干得好!你已经创建了[书名]。”我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

为什么不在网址中加入您的邮件,然后使用javascript将其放在您想要的位置?

self.redirect('/book/%s?message=%s' % (str(b.key.id()), "Good job! You've created " + title)

为js做这样的事情......

alert(document.location.substring(document.location.indexOf("?message=")+9, document.location.length));

希望这有帮助!

答案 1 :(得分:0)

我只是像

那样做

main.py或您为应用使用的其他内容:

app = webapp2.WSGIApplication([

    ('/book/([^/]+)?', server.BookHandler)

], debug=True)

Handlers类似于:

def get(self):
    self.render('new-book.html')

def post(self):
    title = self.request.get('title')

    if title:
        b = Book(title = title)
        b.put()
        self.redirect('/book/%s/' % str(b.key.id()), abort=True)

#...more stuff

#on handler for book
def get(self, message):
    #use message

    self.response.out.write(message)