【问题标题】:Redirect back in Flask重定向回 Flask
【发布时间】:2012-12-25 23:17:30
【问题描述】:

我有一个名为 Item 的数据库表。项目有一个status 属性,可以是

new
todo
doing
done

在我的网站上,我有两个显示项目表的视图。

  • 视图 1 显示所有项(带有状态列)。
  • 视图 2显示状态为 todo 的项目。

根据项目状态,用户可以执行某些操作(“移至待办”、“移至执行”、“移至完成”)。

如果您考虑视图 1 和视图 2,它们都有一个共同点,即它们都包含状态为 todo 的项目。所以在这两个上我都有一个链接到一个名为

的 URL 的按钮
/Item/<id>/moveToDoing

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

现在我希望将用户重定向回他单击按钮的位置(视图 1 或视图 2)。

我的问题是:

  1. 如何用 Flask 做到这一点?我觉得 http://flask.pocoo.org/snippets/62/ 不是我需要的, 因为我这里没有公式的 POST 请求。 (我应该吗?)
  2. 我这样做的方式是否正确,或者是否有关于如何正常解决该问题的约定?

【问题讨论】:

  • 不是为了你的问题,但为什么不把你的网址设计成/item/&lt;id&gt;/moveto/&lt;status&gt;

标签: python redirect flask


【解决方案1】:

我正在使用这里推荐的辅助函数: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')

您链接的 sn-p 基本上做同样的事情,但通过确保您不会被重定向到另一台主机上的恶意攻击者的页面来更安全。

【讨论】:

  • request.referrer 是我需要的一个简单的后退按钮/链接,谢谢!
  • 真的很整洁!
猜你喜欢
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 2021-01-23
  • 2021-08-09
相关资源
最近更新 更多