2013-04-05 5 views
3

Я создал простую флэшку с несколькими приложениями. Я переместил все ошибки (404, 501 и т. Д.) В приложение errors. Но когда возникает ошибка, я вижу только страницы ошибок по умолчанию Flask, а не мои собственные. Структура проекта:Обработчик ошибок флэш-памяти

/site 
|-> main.py 
    from flask import Flask 

    app = Flask(__name__) 
    app.config.from_pyfile('config.py') 

    import errors, account, mysite, blog 
    from errors.views import not_found 

    @app.route("/") 
    def index_view(): 
     return "Welcome!" 

    @app.route("/about") 
    def about_view(): 
     return "About" 

    if __name__ == "__main__": 
     app.run(debug=True) 
|-> templates 
    |-> errors 
    |-> 404.html 

|->errors 
    |-> __init__.py 
    from main import app 
    import errors.views 
    |-> views 
    from errors import app 
    from flask import render_template 

    @app.errorhandler(404) 
    def not_found(error): 
     return render_template('errors/404.html'), 404 

Если я возвращался содержание errors/views.py к main.py он начинает работать, как ожидалось, и показать мне мою страницу ошибки.

ответ

3

Поместите все шаблоны ошибок, например, 404 и т. Д. В папку основных шаблонов вашего проекта. Так что, если ваш проект называется «MyProject», вы можете иметь что-то вроде:

myproject/ 
    __init__.py 
    templates 
     404.html 
     503.html 
     .. and so on 

Зов эти в файле __init__.py как:

app = Flask(__name__) 

@app.errorhandler(404) 
def not_found(error): 
    return render_template('404.html'), 404  
+0

Это очевидно, но не хорошее решение. Если я добавлю другое приложение в проект, я столкнусь с той же проблемой. Вот почему я хочу разделить ошибку события из проекта. –

Смежные вопросы