【问题标题】:Flask redirect url with anchor带有锚的烧瓶重定向网址
【发布时间】:2014-02-05 16:59:50
【问题描述】:

我在使用 python 代码中的锚进行重定向时遇到了一些问题。

我的代码:

func():
    ...
    redirect(url_for('my_view', param=param, _anchor='my_anchor'))

此重定向没有将我重定向到#my_anchor。

在模板链接中:

<a href="{{ url_for('my_view', param=param, _anchor='my_anchor') }}"></a>

效果很好...可能是烧瓶功能“重定向”中的问题。

如何在 Flask 中将重定向与锚点一起使用?

Flask 版本 0.10.x

【问题讨论】:

  • 它适用于我没有_anchor 中的哈希。
  • Markus,对不起,我也使用它没有哈希...我的错误
  • 您是否使用过 Firebug 之类的工具或内置的开发人员工具 Chrome 来查看正在发生的确切 HTTP?当您被重定向时,您被重定向到哪个 URL?此外,您实际上是 返回 redirect() 函数的结果,还是只是调用该函数?如果你能提供一个简短的例子来说明你的问题,我们会更容易弄清楚。
  • 我刚刚写了一个quick test,但无法重现。在这个测试中,当我转到/one 时,我被重定向到/two#blah 并按预期被带到页面底部。
  • 卷曲是什么意思?例如curl -IL http://localhost:5000/test

标签: python flask anchor


【解决方案1】:

如果您的目标是重定向到在 url 中预选了锚点的页面,我认为问题可能与您在“url_for”中传递的函数有关。下面是我尝试做你描述的事情。

views.py

from flask import Flask
from flask import redirect, url_for
app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


@app.route('/myredirect')
def my_redirect():
    return redirect(url_for('hello_world',_anchor='my_anchor'))


if __name__ == '__main__':
    app.run()

这不需要模板,只要你点击 /myredirect,你就会被重定向到 / 锚点 #my_anchor

$ python views.py 开始查看并导航到http://127.0.0.1:5000/myredirect 后,您最终会看到http://127.0.0.1:5000/#my_anchor

【讨论】:

  • _anchor='my_anchor' 是正确的。感谢发帖。
【解决方案2】:

一个简短而简单的方法是

return redirect(url_for('hello_world') + '#my_anchor')

而不是

return redirect(url_for('hello_world',_anchor='my_anchor'))

因为url_for 会为端点返回一个字符串。

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多