我有一个名为Item的数据库表。项目具有status
属性,可以是
new
todo
doing
done
在我的网站上,我有两个显示Item表格的视图。
todo
的项目。根据项目状态,用户可以执行某些操作(“移至待办事项”,“移至操作”,“移至完成”)。
如果您考虑视图1和视图2,它们的共同点是它们包含状态为todo
的项目。所以两者都有一个Button链接到一个名为
/Item/<id>/moveToDoing
其中id - 项目状态设置为“正在进行”。
现在我希望将用户重定向回他点击按钮的位置(查看1或视图2)。
我的问题是:
答案 0 :(得分:28)
我正在使用这里推荐的辅助函数: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
来指定网址。例如,这对于oauth非常有用。
instagram.authorize(callback=url_for(".oauth_authorized",
next=redirect_url(),
_external=True))
如果由于某种原因不应该有推荐人,我还添加了一个默认视图
REDIRECT_URL( 'another_view')
您链接的代码段通过确保您无法重定向到另一台主机上的恶意攻击者页面,基本上可以做到相同但更安全。