Featured image of post Djangoのtemplateから静的コンテンツを読み込む方法【static】

Djangoのtemplateから静的コンテンツを読み込む方法【static】

DjangoのtemplateファイルからCSS・JavaScript・画像などの静的コンテンツ(staticファイル)を読み込む仕組みと手順。アプリ配下にstaticディレクトリを作り、load staticとstaticタグで相対パス指定します♪

842文字

Djangoでは静的コンテンツの管理も楽

静的コンテンツとはCSSJavaScriptImageファイル等のファイル群の事を指します。

また、Djangoではそれらをstaticファイルと呼びます。

Djangoでは、staticファイルをtemplateファイルから簡単に読み込むための仕組みがありますが、仕組みを理解していないと少しつまづいてしまうかもしれません。

今回は、staticファイルを読み込んで画面で確認するまでの手順を整理してみましたので、ご紹介致します。

手順

staticディレクトリの作成

まずは、対象のアプリディレクトリ配下以下のコマンド各staticフォルダを作成してください。

command
mkdir static/css
mkdir static/js
mkdir static/image


Djangoはアプリディレクトリ配下のstaticフォルダに対して静的コンテンツを探しに行きます。

似たような動きとして、templateのHTMLファイルについてもアプリディレクトリ配下のtemplateフォルダに探しに行きますね。

確認

では、今回は以下のディレクトリ構成にしてCSS/JavaScript/Image表示確認をしてみましょう。

ディレクトリ構成
.
省略
├── static
│   ├── css
│   │   └── style.css
│   ├── image
│   │   └── icon.png
│   └── js
│       └── index.js
├── templates
│   └── sample
│       └── index.html
省略

static/css/style.css
h1{
  color: #F00;
}

static/js/index.js
(function(){
    alert("Hello, JavaScript!!");
})();

templates/sample/index.html
<html lang="en">
<head>
 <meta charset="utf-8">
 {% load static %}
 <title>Sample</title>
 <link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}" />
 <script src="{% static 'js/index.js' %}"></script>
</head>
<body>
  

# 静的コンテンツサンプル


  <div>
    <p>
      <img src="{% static 'image/icon.png' %}" / />
    </p>
  </div>
</body>
</html>

すると、以下のように表示されると思います。

staticファイルをtemplateファイルから読み込む際に、押さえるべきポイントは以下です。

ポイント説明
{% load static %}templateファイル内でこの記述をすること。
そうすることでアプリ内のstaticフォルダ認識するようになります。
{% static '{相対パス}' %}srchrefで指定するパスの部分をstaticディレクトリを基準とした相対パスで指定すること。

終わりに

以上のように、Djangoでは簡単静的コンテンツの管理及び読み込みを実現することが可能になっています。

レイアウトを調整する上で、staticファイルは必要不可欠なファイルになるので、皆さんも是非お試しください。