CherryPyでHTMLをルーティングする – Python

バージョン

$ pip --version
pip 19.3.1 from /Users/ryosuke/.pyenv/versions/3.6.8/lib/python3.6/site-packages/pip (python 3.6)

$ python --version
Python 3.6.8

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.6
BuildVersion:	18G1012

やりたいこと

やりたいこと。PythonのCherryPyを使ってhtmlファイルを描画して、それらをルーティングでリンクできるようにする。以下のような感じ。

/
/blog

ディレクトリ構成

実装

import cherrypy
from os.path import abspath

def app():
    return open("index.html")
app.exposed = True


class index:
        @cherrypy.expose
        def index(self):
            return open("index.html")


class blog:
        @cherrypy.expose
        def blog(self):
            return open("blog.html")

d = cherrypy.dispatch.RoutesDispatcher()
d.connect('blog', '/blog', controller=blog(), action='blog')
d.connect('index', '/', controller=index(), action='index')

CP_CONF = {
        '/': {
            'tools.staticdir.on': True,
            'tools.staticdir.dir': abspath('./'),
            'request.dispatch': d
            }
        }

if __name__ == '__main__':
    cherrypy.config.update({'server.socket_port': 8082})
    cherrypy.quickstart(app, '/', CP_CONF)

実行

これで

$ python app.py
[29/Jan/2020:20:49:18] ENGINE Listening for SIGTERM.
[29/Jan/2020:20:49:18] ENGINE Listening for SIGHUP.
[29/Jan/2020:20:49:18] ENGINE Listening for SIGUSR1.
[29/Jan/2020:20:49:18] ENGINE Bus STARTING
[29/Jan/2020:20:49:18] ENGINE Started monitor thread 'Autoreloader'.
[29/Jan/2020:20:49:18] ENGINE Serving on https://127.0.0.1:8082
[29/Jan/2020:20:49:18] ENGINE Bus STARTED

みたいな感じに動くので、以下のurlでアクセスできるはず。cssもしっかり読み込まれるはず。以上!

https://127.0.0.1:8082

https://127.0.0.1:8082/blog

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事