【问题标题】:Flask 404 on DreamhostDreamhost 上的 Flask 404
【发布时间】:2014-02-17 23:47:06
【问题描述】:

我在 Dreamhost 上使用 Flask。我(大部分)遵循此处发布的说明https://mattcarrier.com/flask-dreamhost-setup/。我能够成功设置页面并将网址定向到这些页面等。

现在我希望能够设置 404 页面。我使用@app.errorhandler 设置错误处理程序。唯一的问题是,如果我转到任何没有设置 URL 的页面,它只会返回一个标准的 Apache 500 错误页面。这是因为 Dreamhost 有 Apache 设置吗?公共(静态)文件夹位于顶层。我该如何解决这个问题?

【问题讨论】:

    标签: python http flask passenger dreamhost


    【解决方案1】:

    您可能想尝试在顶层创建文件“missing.html”。

    来源:http://wiki.dreamhost.com/Creating_custom_error_pages

    编辑: 要从 Flask 本身设置错误处理页面,请执行以下操作:

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

    见:http://flask.pocoo.org/docs/patterns/errorpages/

    我的想法是您收到 500 错误,因为 Flask/Python 正在崩溃。你打开调试了吗?您的路由设置如何?

    【讨论】:

    • 即便如此,当我想要的只是 404 时,它会显示 500 错误
    • 我感觉 500 错误即将到来,因为 Flask/Python 正在崩溃。
    • 但是是什么导致它崩溃?
    【解决方案2】:

    我在这里找到了答案 - http://blog.tuxcoder.com/2011/9/8/dreamhost_python_wsgi/

    如果您计划在 Dreamhost 方面进行任何积极的开发,此步骤将简化您的工作。 Werkzeug 带有一个非常好的调试引擎,但默认情况下它不适用于 Dreamhost 配置。 或者例如,如果您的应用中有一个简单的 Python 编码错误,则会导致以下结果:

    在这种模式下,你运气不好。唯一的选择是启动本地服务器,您可以在其中返回并测试应用程序。在某些情况下,仅仅复制错误可能需要付出很大的努力。

    启用并修补 Werkzeug 调试器后,您将获得更好的输出:

    这是 Dreamhost Wiki http://wiki.dreamhost.com/Flask 上的内容(passenger_wsgi.py

    # Uncomment next two lines to enable debugging
    # from werkzeug.debug import DebuggedApplication
    # application = DebuggedApplication(application, evalex=True)
    

    【讨论】:

    • 值得一提的是,在公共服务器上使用 Werkzeug 调试器会产生巨大的安全漏洞。
    • 没错,我仅将其用于调试 - 在我用于开发的单独域上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2014-05-03
    • 1970-01-01
    • 2012-05-10
    • 2018-10-28
    相关资源
    最近更新 更多