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

kentarou.log

プログラミングに関することをマイペースに記録

MacでPython3 + Jinja2を使う

Python

ベーシックなPython3とJinja2の使い方が知りたかったのだが、検索してもフレームワークを使った情報がほとんど。どうすればいいのか掴めずにいた。ようやく動作確認が取れたためそれを残しておく。



Python3のインストール

Homebrewを使ってインストールする。

$ brew install python3


Jinja2のインストール

コマンドはpip3。pipではないので注意

$ pip3 install jinja2


コンテンツの準備

構成は以下。
f:id:k0h4sh1:20170114215020p:plain


cgiserver.py

import http.server

server_address = ("", 8000)
handler_class = http.server.CGIHTTPRequestHandler
server = http.server.HTTPServer(server_address, handler_class)
server.serve_forever()


test.py

#!/usr/bin/env python3
# coding: utf-8
from jinja2 import Environment, FileSystemLoader

listed = ["Python", "Ruby", "PHP", "Perl"]

env = Environment(loader=FileSystemLoader('./'))
tpl = env.get_template('index.html')
html = tpl.render(name='tom', listed=listed)
print("Content-Type: text/html\n")
print(html)

※ 最上部のパスは必ず記述すること。
※ 上記『name='tom'』に指定された文字列が、下記HTMLの『{{name}}』に挿入される。
※ for文の場合は、test.py内の『listed』の中身が下記HTMLの『{% for i in listed %}』に渡される。


index.html

<html>
<head>
  <meta charset="utf-8">
  <title>jinja2 test</title>
</head>
  <body>
    <!-- 文字列の埋め込み -->
    <p>こんにちは、{{name}}</p>

    <ul>
    <!-- for文による埋め込み -->
    {% for i in listed %}
      <li>{{i}}</li>
    {% endfor %}
    </ul>

  </body>
</html>


動作確認

サーバーを起動

$ python3 cgiserver.py

http://localhost:8000/cgi-bin/test.pyへアクセス。表示が確認できたら完了。