見出し画像

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メソッドを呼び出すことで、その部分に値を組み込むことができるのでしたね。



サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪