HTMLテンプレートを利用する
今日は、『つくってマスターPython』の6-1 “http.serverによるサーバープログラム”での学びをアウトプットします。
テンプレートというのは、HTMLのソースコードの中に特別な記号などを使って値を用意しておき、後からPythonを利用して値を置き換えたりできるようにする機能です。Pythonには、「文字列の書式化」機能があります。これを利用することで、特別なライブラリの導入などなしに簡単なテンプレート機能を実装できます。
フォルダ内に「sample.html」という名前のファイルを作成します。コードの記述は、以下のようになります。
<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
<meta charset="utf-8">
<title>{title}</title>
</head>
<body>
<h1>{header}</h1>
<p>{message}</p>
</body>
</html>
上記のコードにおいて、{}記号を使った値が埋め込まれています。これらは、後から値をはめ込むためのプレースホルダーの役割を果たしています。sample.htmlを読み込み、プレースホルダーに値をはめ込んで表示するスクリプトは以下のようになります。
from http.server import BaseHTTPRequestHandler, HTTPServer
# sample.html
with open('sample.html', mode='r') as f:
sample = f.read()
class HelloServerHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200) #
self.end_headers()
html = sample.format(
title = 'サンプル',
header = 'サンプルページ',
message = 'これは、サンプルのメッセージです。'
)
self.wfile.write(html.encode('utf-8'))
return
HTTPServer(('',8000), HelloServerHandler).serve_forever()
with openを使い、sample.htmlの内容をあらかじめ読み込んでおきます。そして、do_GETメソッドで、読み込んだ文字列をフォーマットして必要な値を組み込んだ上でwriteしています。
Pythonでは、{}を使って文字列にプレースホルダーを指定しておくと、後でformatメソッドでそれぞれの部分に文字列をはめ込むことができます。
{}は置換フィールドと呼ばれるもので、後から値を挿入する場所を示します。{}を含むテキストは、formatメソッドを呼び出すことで、その部分に値を組み込むことができるのでしたね。
いいなと思ったら応援しよう!
サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪