gpt4 book ai didi

python - Flask 在引发 RequestRedirect ('index' 后永久重定向到/index)

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:25 25 4
gpt4 key购买 nike

所以我在 python 2.7 中使用 flask 0.9。为了在不真正理解我在做什么的情况下偷偷摸摸,我弄乱了我的 url 路由。

我正在使用 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')

我的意图是让它像 flask View 中的 return redirect('index') 一样工作,可惜它没有按计划工作。它只是让它在第一次触发后/admin 总是路由到/index。

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

非常感谢任何帮助!

最佳答案

您的重定向似乎已被浏览器缓存。看这里:http://getluky.net/2010/12/14/301-redirects-cannot-be-undon/

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

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

  1. is_accessible 用于验证某个管理 View 是否对用户可见。如果您有多个 View ,将为每个 View 调用它,然后只显示可见的菜单项
  2. 有一个您可以覆盖的_handle_view 方法。您可以在此处查看默认实现:https://github.com/mrjoes/flask-admin/blob/master/flask_admin/base.py#L269

请随意使用 302 状态代码返回正确的重定向,而不是执行 abort(404)。

关于python - Flask 在引发 RequestRedirect ('index' 后永久重定向到/index),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com