ホーム >  Python > Django >  Djangoのテンプレート

投稿日:   |  最終更新日:

Djangoのテンプレート

DjangoPython

Djangoでテンプレートを使用します。

テンプレート

Djangoのテンプレートとは、雛形となるhtmlとデータを組み合わせてテキストを作り出す仕組みです。Djangoでは、htmlだけでなくメール、CSVなどあらゆる種類のテキストを生成できます。

どうテンプレートを記述するか?

テンプレート内では直接Pythonのコードは記述しません。独自のタグを用いて条件分岐やループを記述します。

環境

OS CentOS 7.1.1503
pyenv 1.1.3-5-g7dae197
Anaconda 3-4.3.0
MariaDB 5.5.52-1.el7
Apache 2.4.6
mod_wsgi 4.5.14
Django 1.11.3

テンプレート描画

テンプレートを描画するには、view.pyでTemplateResponseオブジェクトを利用します。

①以下のようなDjangoアプリ構成を作ります。プロジェクト名が「pj1」で、アプリケーション名が「item」です。プロジェクトの設定は済ませたものとします。赤字のディレクトリとファイルは、今回作成するテンプレートファイルです。

  • pj1/
  • pj1/
  • __init__.py
  • settings.py
  • urls.py
  • wsgi.py
  • item/
  • __init__.py
  • admin.py
  • apps.py
  • urls.py
  • urls.py
  • views.py
  • __pycache__/
  • migrations/
  • templates/
  • item/
  • message.html
  • __init__.py
  • models.py
  • views.py
  • manage.py

②itemディレクトリ配下のurls.pyを編集します。「http://localhost/item/hello」のルーティングを作成するため、以下のように記述します。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^hello/', views.hello, name='hello'),
]

③プロジェクトディレクトリ「pj1」直下のurls.pyを以下のように編集します。

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),

    #itemアプリケーションのURL設定
    url(r'^item/', include('item.urls', namespace = 'item')),
]

④アプリケーションディレクトリ「item」に「template」ディレクトリを作ります。また、そのさらに直下に「item」ディレクトリを作成します。

mkdir template
cd template
mkdir item

⑤そこに、htmlのテンプレートファイル「message.html」を作成します。

vi item/message.html

以下のように記述します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
  <p>テンプレートサンプル</p>
  <ul>
    <li> {{ message }} を表示しています。</li>
  </ul>
  </body>
</html>

⑥view.pyを編集します。

from django.shortcuts import render
from django.http import HttpResponse
from django.template.response import TemplateResponse

def hello(request):

    #テンプレートに渡す辞書
    context = {
        'message': 'メッセージ',
    }

    return TemplateResponse(request, 'item/message.html', context=context)

⑦動作確認をします。Djangoのwebサーバーを起動して、webブラウザから以下のURLにアクセスします。

http://ローカルのipアドレス/item/hello

以下のようなページが表示されます。

TemplateResponseクラスのコンストラクタに渡した辞書のキーは、テンプレート内で「{{ <キー名> }}」と記述すると、キーに対応する値を出力できます。

変数の表示

viewで本日の日付を格納した変数「today」とメッセージを格納した変数「message」を定義します。これらをテンプレートで表示します。

①view.pyを編集します。

from django.shortcuts import render
from datetime import datetime

def hello(request):

    d = {
        'today': datetime.now(),
        'message': 'Sample message',
    }

    return render(request, 'item/index.html', d)

②itemディレクトリ配下のurls.pyを編集します。「http://localhost/item/」のルーティングを作成するため、以下のように記述します。

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^hello/', views.hello, name='hello'),
]

③「template/item」ディレクトリにhtmlのテンプレートファイル「index.html」を作成します。

vi item/index.html

以下のように記述します。

<!DOCTYPE html>
<html>
<head lang="ja">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
{{ today.year }}年<br>
{{ today.month }}月<br>
{{ today.day }}日<br>
{{ today.hour }}時です。<br>
{{ message }}
</body>
</html>

④動作確認をします。Djangoのwebサーバーを起動して、webブラウザから以下のURLにアクセスします。

http://ローカルのipアドレス/item/

以下のようなページが表示されます。

トラックバック用のURL
プロフィール

名前:イワサキ ユウタ 職業:システムエンジニア、ウェブマスター、フロントエンドエンジニア 誕生:1986年生まれ 出身:静岡県 特技:ウッドベース 略歴 20

最近の投稿
人気記事
カテゴリー
広告