如何重定向到外部404页面python烧瓶

时间:2015-04-08 13:31:04

标签: python redirect error-handling flask

我怎样才能实现这一点我是python和flask的新手,我正在尝试将我的404重定向到这样的外部URL:

@app.route('404')
def http_error_handler(error):
return flask.redirect("http://www.exemple.com/404"), 404

但它不起作用我正在

未找到 在服务器上找不到请求的URL。如果您手动输入了网址,请检查您的拼写,然后重试。

3 个答案:

答案 0 :(得分:9)

你应该尝试这样的事情:

from flask import render_template

@app.errorhandler(404)
def page_not_found(e):
    return render_template('404.html'), 404

来源http://flask.pocoo.org/docs/1.0/patterns/errorpages/

答案 1 :(得分:5)

您不能这样做 - user-agent (在大多数情况下,浏览器)查看返回的状态代码以确定要执行的操作。当您返回404状态代码时,您对用户代理说的是“我不知道您要求的是什么”,然后用户代理可以:

  • 显示您在回复正文中返回的内容
  • 向最终用户显示自己的错误消息
  • 执行上述两个选项的组合

redirect实际上creates a little HTML response (via werkzeug.exceptions),通常是最终用户看不到的,因为当用户代理看到302响应时,它会跟随Location标头。但是,当您提供自己的状态代码时,覆盖状态代码(404)。

修复方法是:

  • 删除状态代码(可能以向最终用户发送错误信号为代价)
  • 使用a meta:refresh and / or JavaScript redirect发送404(略好一点,仍然令人困惑):

    return redirect("/where-ever"), 404, {"Refresh": "1; url=/where-ever"}
    

答案 2 :(得分:2)

尝试此而不是路线

@app.errorhandler(404)
def own_404_page(error):
    pageName =  request.args.get('url')
    print(pageName)
    print(error)
    f = open('erreur404.tpl')
    return f.read()