【django】テンプレートに値を渡す

 

この記事では、テンプレートに値を渡す方法について解説します。

 

[toc]

 

アプリケーションの登録

 

テンプレートを使うためには、プロジェクトの中にhelloアプリケーションを追加する必要があります。

 

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello', # ここに追加しました
]

 

テンプレートファイルを作る

 

テンプレートファイルを作成しましょう。

「django_app」→「hello」→「templates」→「hello」になるように、helloの下にtemplatesフォルダとhelloフォルダを作成します。

 

その下に以下のファイルを作成します。

 

django_app/hello/templates/hello/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ msg }}</p>
</body>
</html>

 

urls.pyの修正

 

http://〇〇/hello/にアクセスがあったら、views.pyのindex関数が呼ばれるようにします。

 

urls.pyは2つあり、アプリ内にあるurls.pyとプロジェクトのurls.pyがあります。

 

プロジェクトのurls.py

 

全体をまとめるプロジェクトのurls.pyです。

この中で、URLごとにどのアプリに処理を渡すか決めます。

http://〇〇/hello/にアクセスがあったらhelloアプリに処理をお願いするようにします。

 

/django_app/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', include('hello.urls'))
]

 

アプリのurls.py

 

http://〇〇/hello/のアドレスの後に続くアドレスを指定します。ここでは空の文字列を指定しています。

views.pyの中のindex関数を実行するようにしています。

/hello/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index')
]

 

ビューの修正

 

paramsというPythonの辞書を作り、titleとmsgの内容を記載します。

 

views.py

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    params = {
        'title' : 'Hello/Index',
        'msg'   : 'これは、サンプルで作ってみたページでござる。'
    }
    return render(request, 'hello/index.html', params)

 

renderはテンプレートをレンダリングするための関数です。

 

実行結果

 

browser

 

うまくいくと、こんな感じで表示されます。

 

以上です。お疲れ様でした。

 

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog