在Webapp2重定向之间传递参数

时间:2017-06-20 08:27:50

标签: python google-app-engine webapp2

我想将没有slug的URL重定向到urls.py级别的slug。

我的终点如下:

(r'/invoices/<:(-?\d+)>/print/', PrintHandler, 'ShortPrintHandler')
(r'/invoices/<:(-?\d+)>/<:([\w-]*)>/print/', PrintHandler, 'FullPrintHandler')

我有什么方法可以首先传递decimal,从短网址到长网格的参数,重定向?在处理程序级别已经涵盖了生成没有slug的URL。

试图用

来处理它
RedirectRoute(r'/invoices/<:(-?\d+)>/print/', PrintHandler, redirect_to_name='FullPrintHandler')

但是引发了错误:

KeyError: 'Missing argument "1" to build URI.'

1 个答案:

答案 0 :(得分:4)

只有RedirectRoute才能做到这一点;你需要从某个地方获得slug值。

您需要编写标准路由,并且在处理程序中,您应该从数据存储区获取对象,并使用slug将重定向返回到完整路径。

像(未经测试)的东西:

class RedirectToFullPath(webapp2.RequestHandler):
    def get(self, invoice_id):
        invoice = Invoice.get_by_id(invoice_id)
        self.redirect_to('FullPrintHandler', invoice_id, invoice.slug)
相关问题