Djangoでテンプレートを返す基本(render)を完全解説!初心者でも安心のビュー入門
生徒
「Djangoで画面に文字を表示したいんですが、どうやってHTMLを表示するんですか?」
先生
「Djangoでは、ビューという場所からrenderという仕組みを使ってHTML(テンプレート)を返します。」
生徒
「ビューって何ですか?テンプレートってHTMLのことですか?」
先生
「順番に説明します。まずは、Djangoで画面が表示される流れから見ていきましょう。」
1. Djangoで画面が表示される基本の流れ
Djangoでは、ブラウザでURLにアクセスすると、いくつかの処理を通って画面が表示されます。このとき重要なのがURL、ビュー、テンプレートの3つです。
まずURLとは、ブラウザのアドレス欄に入力する文字列のことです。次にビューとは、URLに応じて「どんな処理をするか」を決める場所です。最後にテンプレートとは、実際に画面に表示されるHTMLファイルのことです。
この3つが連携することで、DjangoはWebページを表示しています。Django初心者の方は、ビューが司令塔のような役割を持っていると考えると理解しやすいです。
2. ビュー(View)とは何をする場所なのか
ビューとは、ユーザーからのアクセスに対して「何を返すか」を決める場所です。Djangoのビューには関数ビューとクラスビューがありますが、ここでは一番シンプルな関数ビューを使います。
関数ビューはPythonの関数として書かれます。この関数の中で、HTMLを返したり、文字を返したり、データを処理したりします。今回のテーマであるrenderは、このビューの中で使います。
ビューは「注文を受けて料理を出す店員さん」のような存在です。お客さん(ブラウザ)から注文(URL)が来たら、決められた料理(HTML)を返します。
3. renderとは何かを超かみ砕いて説明
renderとは、Djangoでテンプレート(HTML)を使って画面を表示するための仕組みです。正式には関数ですが、初心者の方は「HTMLを表示する魔法の道具」くらいに考えて大丈夫です。
renderを使うと、HTMLファイルを読み込み、その内容をブラウザに返してくれます。また、Pythonの値をHTMLに渡すこともできます。
難しい言葉で言うと「テンプレートをレンダリングする」と言いますが、ここでは「HTMLを完成させて表示する」という理解で問題ありません。
from django.shortcuts import render
def hello_view(request):
return render(request, 'hello.html')
4. renderの基本的な書き方を理解しよう
renderの基本形はとてもシンプルです。ビュー関数の中で、render(request, テンプレート名)という形で使います。
requestとは、ブラウザから送られてきた情報が入った箱のようなものです。初心者のうちは「毎回書くお決まりのもの」と覚えてしまって問題ありません。
テンプレート名には、表示したいHTMLファイルの名前を書きます。このHTMLは、templatesフォルダの中に置いておきます。
def top_page(request):
return render(request, 'top.html')
5. テンプレート(HTML)ファイルの役割
テンプレートとは、画面に表示される見た目を作るHTMLファイルのことです。文字や見出し、文章などはすべてテンプレートに書きます。
Djangoでは、テンプレートを使うことで、デザイン部分と処理部分を分けて管理できます。これにより、コードが読みやすくなり、修正もしやすくなります。
初心者の方は、まず「HTMLファイル=テンプレート」と覚えておくと混乱しません。
<!DOCTYPE html>
<html>
<head>
<title>トップページ</title>
</head>
<body>
<h1>ようこそDjangoへ</h1>
<p>これはテンプレートの表示例です。</p>
</body>
</html>
6. renderでデータをテンプレートに渡す
renderの便利なところは、PythonのデータをHTMLに渡せる点です。これにより、画面に動的な内容を表示できます。
例えば、ユーザー名やメッセージをテンプレートに渡して表示することができます。データは辞書という形で渡します。
辞書とは、名前と値をセットで管理する箱のようなものです。初心者の方は「ラベル付きの箱」と考えると分かりやすいです。
def greet_view(request):
context = {
'username': 'Django初心者'
}
return render(request, 'greet.html', context)
7. テンプレート側でデータを表示する方法
ビューから渡されたデータは、テンプレート内で特別な書き方を使って表示します。この書き方をテンプレートタグと呼びます。
波かっこを2つ使って、変数名を書くだけで表示できます。難しい処理は不要なので、初心者でも安心です。
これにより、HTMLの中にPythonの値を自然に埋め込むことができます。
<h1>こんにちは、{{ username }}さん!</h1>
8. renderを使うときの初心者がつまずきやすいポイント
Django初心者がrenderでつまずきやすいのは、テンプレートの置き場所やファイル名の間違いです。テンプレートは必ずtemplatesフォルダの中に置く必要があります。
また、ファイル名のスペルミスや全角文字の混入にも注意が必要です。エラーが出たときは、落ち着いてファイル名とパスを確認しましょう。
render自体はとてもシンプルな仕組みなので、基本の形を何度も書いて慣れることが大切です。