2013-01-11 118 views
8

我有一个名为Item的DB表。项目拥有status属性,可以是中重新导入Flask

new 
todo 
doing 
done 

在我的网站我有一个展示项目的表两种观点。

  • 查看1显示全部项目(带状态栏)。
  • 查看2 只有显示状态为todo的项目。

根据项目状态,用户可以执行某些操作(“转移到待办事项”,“移动到做”,“移动到完成”)。

如果您考虑查看1和查看2,它们都有共同之处,那就是它们包含状态为todo的项目。所以在两个我有一个按钮链接到一个URL称为

/Item/<id>/moveToDoing 

其中id - 项目的状态设置为“正在做”。

现在我想让用户重定向回他点击按钮(视图1或视图2)的位置。

我的问题是:

  1. 如何用瓶做到这一点?我觉得 http://flask.pocoo.org/snippets/62/不是我所需要的, ,因为我在这里没有POST形式的请求。 (我应该吗?)
  2. 我是这样做的正确方法还是有关于如何正常解决这个约定?
+1

不适合你的问题,但为什么不设计你的网址到'/ item//moveto/' – greatghoul

回答

22

我使用的是这里推荐的辅助函数:http://flask.pocoo.org/docs/reqcontext/

def redirect_url(default='index'): 
    return request.args.get('next') or \ 
      request.referrer or \ 
      url_for(default) 

使用它在视图

def some_view(): 
    # some action 
    return redirect(redirect_url()) 

没有任何参数,将用户重定向回哪里他来自(request.referrer)。 您可以添加get参数next来指定url。例如,这对oauth很有用。

instagram.authorize(callback=url_for(".oauth_authorized", 
               next=redirect_url(), 
               _external=True)) 

我还添加了一个默认视图是否应该有某种原因

REDIRECT_URL(“ another_view”)

你基本上链接的代码片段做同样的,但通过确保更安全没有引用您无法将其重定向到其他主机上的恶意攻击者页面。

+5

'request.referrer'是我需要一个简单的后退按钮/链接,谢谢! –