When it’s ready.

出来るまで出来ない

Djangoの人はほんとに優しい ベーステンプレートの使い方

自分の勉強不足のせいですが、ベーステンプレートの使い方を間違っていました。
Django-jaで恐れ多くも聞いてみました。MiCHiLUさんが教えてくださいました。
ホント暖かいと思た。

に{% block css%}、{% block js %}とか置くのがいいと思います

ということです。今後の自分の為に、同じ悩みを持った人の為に以下まとめ

テンプレートを拡張していく際に、JSとか、CSSを適宜適用する方法

なんと呼ぶのか知らないが、Djangoのテンプレートシステムは、ベースファイルを簡単に拡張していける。

命名定義
ベースファイル
コンテンツの詰まってないひな形
拡張するファイル
ベースファイルに具体的な内容を指定するファイル
手順
  1. ベースのファイルを用意する。
    1. 毎回絶対書きそうなやつ
  2. 1)の中にブロックを定義しておく。
    1. 利用する度に内容が変わる項目をブロック({%hoge%} foo {%endblock%})として定義する。
    2. jsとか、cssとか、contentとか、メニューやフッターもあるといいかも
  3. 拡張するファイルを用意する。
  4. ベースのファイルを指定する(extends)
  5. 2)で定義したブロックに対応したブロックを記述する。
サンプルファイル

ベースファイル(base.html)
注)いろいろコメント書き込んだのでこのままでは動きません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>{% block title %}Untitled{% endblock %}</title> #<title>タグの中にtitleブロックを定義
		{% block js %}{% endblock %} # jsブロックを定義(<script>タグは拡張側で書く)
		<style type="text/css">
		{% block css %}{% endblock %} #cssブロックを定義
		</style>
    </head>
    <body bgcolor=gray text=white link=pink vlink=pink> 
    <h1>MessageRelaySystem Two a</h1>
    <a href="/">Home</a>  <hr>
        {% block contents %}hello world.{% endblock %}  #contentsブロックを定義
    <hr>
    </body>
</html>                                                                                  

拡張1ファイル(main.html)
注)いろいろコメント書き込んだのでこのままでは動きません。

{% extends "base.html" %}  #base.htmlを拡張しますよ宣言

{% block title %} #  title ブロックの始まり宣言
	{{ title }}
{% endblock %} # title ブロック ここまで


{% block contents %} # contents ブロックの始まり宣言
 <h3>{{ title }}</h3>
{% endblock %} # contents ブロックここまで


{% block js %} #js ブロック始まり宣言
 <script language="javascript" src="./js/prototype.js"
type="text/javascript"></script>
{% endblock %} #jsブロックここまで


{% block css %} #cssブロック始まり宣言
.Title{
  background:#fff;
  float:center;
  width:700px;
  margin:10px auto 0;
  padding:6px;
  border:solid 1px #eee;
}
{% endblock %} #cssブロックここまで