我想将没有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.'
答案 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)