この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:T
更新日時:2026-06-11 07:29:05

タイトル: 静的ファイルの読み込み
SEOタイトル: djangoテンプレートでcssやjavascriptの静的ファイルを読み込む方法

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<thead>
		<tr><th style="background-color:#f39c12;color:#ffffff;text-align:left">この記事の要点</th></tr>
	</thead>
	<tbody>
		<tr>
			<td style="background-color:#fef9e7">
			<ul>
				<li>Django の<strong>静的ファイル (static)</strong> をプロジェクト単位で読み込む設定</li>
				<li><code>settings.py</code>: <strong><code>STATIC_URL = '/static/'</code> + <code>STATICFILES_DIRS = [BASE_DIR / "static"]</code></strong></li>
				<li>テンプレートで <code>{% load static %}</code> → <code>{% static 'css/app.css' %}</code> で参照</li>
				<li>本番は <code>collectstatic</code> で <code>STATIC_ROOT</code> に集約</li>
			</ul>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>



<h2>setting.py</h2>

<p>setting.pyにて静的ファイルを読み込むURLと静的ファイルを格納するディレクトリを定義する。</p>

<p>以下の例ではURLはstatic始まり、ディレクトリはプロジェクト直下のstaticディレクトリを指定している。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#f1c40f">STATIC_URL</span><span style="color:#ffffff"> = '/static/'</span></p>

			<p><span style="color:#f1c40f">STATICFILES_DIRS</span><span style="color:#ffffff"> = (<br />
			&nbsp; &nbsp; [<br />
			&nbsp; &nbsp; &nbsp; &nbsp; os.path.join(BASE_DIR, "static"),<br />
			&nbsp; &nbsp; ]<br />
			)</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<h2>静的ファイルの設置</h2>

<p>以下の様にプロジェクト直下にstaticディレクトリを作成して更にその中にcssおよびjsディレクトリを作成する。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">プロジェクト名/<br />
			&nbsp; &nbsp; db.sqlite3<br />
			&nbsp; &nbsp; manage.py</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp;&nbsp;</span><span style="color:#2ecc71">プロジェクト名</span><span style="color:#ffffff">/<br />
			&nbsp; &nbsp; &nbsp; &nbsp; __init__.py<br />
			&nbsp; &nbsp; &nbsp; &nbsp; settings.py<br />
			&nbsp; &nbsp; &nbsp; &nbsp; urls.py</span><br />
			<span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; wsgi.py</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; </span><span style="color:#2ecc71">アプリケーション名</span><span style="color:#ffffff">/<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__init__.py<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__pycache__/<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;admin.py<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apps.py<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;migrations/<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;models.py</span><br />
			<span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; views.py</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; </span><span style="color:#f1c40f">static</span><span style="color:#ffffff">/<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;css<br />
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js</span><br />
			&nbsp;</p>
			</td>
		</tr>
	</tbody>
</table>

<p>cssおよびjsディレクトリの中に適当なファイルを設置する。(今回はtest.css, test.jsとする)</p>

<p>&nbsp;</p>

<h2>テンプレートの記述</h2>

<p>テンプレート側では以下のように記述することで静的ファイルを読み込むことが出来る。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#f1c40f">{% load static %}</span></p>

			<p><span style="color:#ffffff"><head><br />
			&nbsp; &nbsp; &nbsp; &nbsp; <!-- CSS --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color:#f1c40f"><link href="{% static 'css/test.css' %}" rel="stylesheet"></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; <!-- Javascript --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color:#f1c40f"><script type="text/javascript" src="{% static 'js/test.js' %}"></script></span><br />
			<span style="color:#ffffff"></head></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>