【django】TemplateViewでHTMLを表示する方法

djangoでまずやるべきことは自分で作成したHTMLファイルを表示させることです

djangoでは,TemplateViewを用いることで速攻かつ圧倒的に少ないコードでHTMLファイルの表示を実装できます

本記事では,TemplateViewの基本的な使い方とよくあるエラーに対する処理方法について解説します

目次

TemplateViewとは何か

djangoで用意されているClass-based Viewの1つです

PythonでのClass形式で記述するタイプで,TemplateViewを継承して自分なりのViewに改造していきます

このTemplateViewは,自身で作成したHTMLを表示する際に,少ないコードで簡単に実装することができます

TemplateViewでHTMLを表示する

以下にあるHello,worldと表示するだけの関数ベースのビューを書き換えます

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world.")

djangoプロジェクトへのHTMLの配置

自身で作成したHTMLをdjangoプロジェクトのフォルダーに配置します

本ブログはアプリ名がblogなので以下のようになります

templates,blog,home.htmlを新規作成してください

django_project
    django_project
    blog
        templates           #追加
            blog            #追加
                home.html   #追加

Views.pyにTemplateViewを追加する

TemplateViewでHTMLを表示するだけのクラスを作成します

TemplateViewをimportしてサブクラス化します

from django.views.generic import TemplateView

class HomeTemplateView(TemplateView):
    template_name = 'blog/home.html' # 自身で作成したHTMLの名前

TemplateViewのURL指定をする

urls.pyにTemplateViewで表示したいURLを指定します

from django.urls import path
from .views import HomeTemplateView

urlpatterns = [
    path('', HomeTemplateView.as_view(), name='home'), # 最後のカンマを忘れないように
]

うまく表示されているか確認する

http://127.0.0.1:8000/にアクセスして表示されているか確認しましょう
Hello,worldとなっていたら完了です

TemplateDoesNotExistとエラーが出たら

テンプレートが存在しないエラーが出ることがあります

そのケーススタディをいくつか紹介します

INSTALLED_APPSに追加していない

settings.pyのINSTALLED_APPSに自身のアプリを追加していない場合があります

INSTALLED_APPS = [
    'blog.apps.BlogConfig',    #追加
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

フォルダ名や構成が間違えている

アプリフォルダに作成するフォルダは2つで構成が以下のようになります

templates/blog/home.html

template“としている場合やblogフォルダが作成されていない場合がよくあります

views.pyでの表記が間違えている

私がよくやるミスがviews.pyのtemplate_name指定のミスです

blog/を書いているか,HTMLの名称を間違えていないか確認してください

class HomeTemplateView(TemplateView):
    template_name = 'blog/home.html' # blog/を書いていない

参考文献

下記にTemplateViewの公式ドキュメントや関連記事をまとめているので,参考にしてください

Base viewsの公式ドキュメント

TemplateViewで簡単にデータベースを扱う

Templateを継承してHTMLのコードを減らす

Templateの継承を使用しながら,ページごとにactiveを実装する

お疲れ様でした

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次