在提升RequestRedirect('index')后,Flask永久重定向到/ index

时间:2013-05-04 03:35:49

标签: python flask werkzeug

所以我正在使用带有python 2.7的烧瓶0.9。试图偷偷摸摸而没有真正理解我在做什么,我弄乱了我的网址。

我正在使用flask-admin来启动快速界面。这是我做的:

from flask.ext.admin import AdminIndexView
from werkzeug.routing import RequestRedirect

class IndexView(AdminIndexView):
def is_accessible(self):
    if current_user.is_authenticated and current_user.has_role('admin'):
        return True
    else:
        raise RequestRedirect('index')

我的目的是让它像烧瓶视图中的返回重定向('index')一样工作,唉它没有按计划工作。它只是在第一次触发后将/ admin总是路由到/ index。

现在,在删除代码并更改raise语句以返回False之后,我的应用程序仍然将/ admin重定向到/ index(即使在不同的虚拟环境中创建了完全不同的应用程序).​​.

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

看起来您的浏览器缓存了重定向。见这里:http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/

不幸的是,RequestRedirect()异常返回301 HTTP状态代码,它将被浏览器缓存。

有一种方法可以做得更好:

  1. is_accessible用于验证用户是否可以看到某些管理视图。如果您有多个视图,则会为每个视图调用该视图,然后仅显示可见的菜单项
  2. 您可以覆盖_handle_view方法。您可以在此处查看默认实施:https://github.com/mrjoes/flask-admin/blob/master/flask_admin/base.py#L269
  3. 随意返回302状态代码的正确重定向,而不是中止(404)。