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もしっかり読み込まれるはず。以上!