ホーム > python > django > Djangoを使ってみる③(テンプレートの適用)

Djangoを使ってみる③(テンプレートの適用)

pythondjango

使用するテンプレート

「Hello, world」と表示するだけでは味気ないので既存のテンプレートを使ってトップページを作ってみます。
今回は試しに「LESSER」というテンプレートを使ってみます。
その他、「bootstrap テンプレート」などで調べると無料、有料問わず色々出てくるので好きなテンプレートを選べばOKです。
基本的にやることはどのテンプレートでも同じになるはずです。
Lesser: Free HTML5 Bootstrap Template - FreeHTML5.co

テンプレートのダウンロードと配置

「Free Download」からテンプレートをダウンロードします。
20210509154521

manage.pyのある階層に「static」「templates」フォルダを作成します。
20210509154656

ダウンロードしたテンプレートを解凍し、「css」「fonts」「images」「js」「sass」を先ほど作成した「static」フォルダにコピーします。
20210509155411

「templates」フォルダに「test_app」というフォルダを作成し、そこにindex.htmlをコピーします。
20210509155655


settings.pyの編集

TEMPLATESの部分を以下のように修正します。

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], #修正箇所
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

また、下記を追加します。

STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]

※osがimportされていない場合は「import os」も追加します

変更を加えた箇所
20210509155948


test_app/views.pyの編集

「Hello, world」と表示する処理を記載していた個所を、index.htmlを読み込む処理に変更します。
views.pyを以下のように編集します。

from django.http import HttpResponse
from django.shortcuts import render #新規追加
def index(request):
return render(request, 'test_app/index.html') #index.htmlを読み込む処理に変更


index.htmlの修正

デフォルト状態ではstatic配下のファイルを読みに行くことが出来ないためパスを変更する必要があります。
まずファイルの先頭に下記の記述を追加します。

{% load static %}

次にcssファイル、jsファイル、jpgファイルを読み込ませるため、

<link rel="stylesheet" href="css/******.css">
<script src="js/******.js"></script>
<a href="#" class="featured-grid" style="background-image: url(images/******.jpg);">
<a href="#"><img class="img-responsive" src="images/******.jpg" alt="Blog"></a>

の様な個所のファイルパスの部分を「{% static 'ファイルパス' %}」で囲みます。

<link rel="stylesheet" href="{% static 'css/******.css' %}">
<script src="{% static 'js/******.js' %}"></script>
<a href="#" class="featured-grid" style="background-image: url({% static 'images/******.jpg' %});">
<a href="#"><img class="img-responsive" src="{% static 'images/******.jpg' %}" alt="Blog"></a>

の様に修正します。
例えば下記の様な個所です。

20210509161106

参考:変更後のファイル
ファイル


動作確認

サーバを再起動し、http://127.0.0.1:8000へアクセスします。
下記のようにテンプレートが読み込まれていればOK。

20210509162814 20210509162826