2015-06-04 3 views
-1

Я хочу изменить код по умолчанию 404, когда фляга не находит маршрут, другому коду. Как я могу это сделать?Flask custom "not found" code

+0

В случае, если вы хотите изменить страницу (или ее сообщение), отображаемую на 404? –

+1

Почему вы хотите изменить 404 на какой-то другой код? Если вы хотите использовать более определенный код, например 410 (Gone), вы должны использовать его только для некоторых маршрутов и только в том случае, если документ действительно удален. – Pyfisch

+0

Я делаю конкретный api, 404, используемый, когда объект не найден, 502 будет использоваться, когда колба не найдет маршрут – novox

ответ

3

Как уже говорилось, обычно не рекомендуется переопределять значение стандартных кодов состояния.

Хотя вы можете изменить код состояния, возвратившись, вот пример:

from flask import Flask 

app = Flask(__name__) 

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

@app.errorhandler(404) 
def page_not_found(error): 
    return 'This page does not exist', 777 

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

Это будет возвращать код состояния 777 на любой странице, кроме /.

Вот результат:

777 status code

Еще по теме можно найти here.

+0

, но если я отменил (404) в коде @ app.errorhandler (404), он обработает его, а затем я получу 777 вместо 404 – novox

+2

@novox. Это то, о чем вы только что попросили. – davidism

+1

@novox Я думаю, что вы можете использовать то, что я опубликовал, чтобы изменить код 404 на что-то еще. И для _your 404_ вы можете создать собственное исключение (см. [Здесь] (http://werkzeug.pocoo.org/docs/0.10/exceptions/#custom-errors) и [здесь] (http: //flask.pocoo. org/docs/0.10/patterns/apierrors /)), а затем обработать его, возвращая статус 404. Вы не сможете использовать 'abort (404)', по крайней мере, без модификации самой колбы. Вам придется «вызывать исключение YourCustomFourOFour (...)» вместо «abort (404)». – kishkin