読者です 読者をやめる 読者になる 読者になる

Python2 + Bottleで、404ページを強制的に表示する

Bottle Python

Bottleで404ページを強制的に表示したくて調べた時のメモです。

 

環境

  • Windows10 x64
  • Python 2.x
  • Bottle 0.12.9

 

調べたこと

どうやって実装するのが良いのか調べたところ、stackoverflowでabort()を使っている回答がありました。
python - Bottle.py error routing - Stack Overflow

回答では500ページでしたが、404ページでも使えそうでした。

 
ただ、公式ドキュメントのAPIリファレンスでabort()に関する情報がなかったため、ソースコードを読んだところ、例外HTTPErrorを発生させるためのショートカットでした。
bottle/bottle.py at 0.12.9 · bottlepy/bottle

次に、HTTPErrorを見ると、ステータスコードのデフォルトは500でしたが、引数として任意の値を渡せそうなため、404でもいけそうでした。
bottle/bottle.py at 0.12.9 · bottlepy/bottle

 
一方、Bottleのエラーをハンドリングする方法については、公式ドキュメントに記載がありました。

 

実装

force404.py

# -*- coding:utf-8 -*-
from bottle import route, run, abort, error

@route("/")
def top():
    abort(404, "go to 404")
    return "Hello world!"

@error(404)
def error404(error):
    return "Not Found!"

run(host="0.0.0.0", port=8080, debug=True, reloader=True)

と書いてpython force404.pyと実行し、ブラウザでアクセスしたところ、Not Found!が表示されました。

 

ソースコード

GitHubに上げました。リポジトリforce404.pyが今回のファイルです。
thinkAmi-sandbox/Bottle-sample: Bottle (python web framework) : sample codes