2011-08-22 3 views
1

私のサイトで何度も簡単なHTML構造を何度も繰り返したいとします。 たとえば、「緑のボックス」のページの一部を表示したいとします。Pagepartsテンプレートを拡張する

このようなテンプレートファイルを作成することです。この目標を達成するための最初の必須のステップ:

<!-- greenbox.html --> 
<div style="background-color:#88ff88;"><br> 
{% block content %}<br> 
{% endblock %}<br> 
</div> 

それから私は、この定義済みのテンプレートを必要とするたびに、私は次のように別々のテンプレートを作成する必要があります。

<!-- pagepart_1.html --> 
{% extends "greenbox.html" %} 
{% block content %} 
This time I want to add this dummy text in here 
{% endblock %} 

<!-- pagepart_2.html --> 
{% extends "greenbox.html" %} 
{% block content %} 
The second time I want to add some other text 
{% endblock %} 

緑色のボックスを含む実際のページには、次のようになります。

<html><head>My Page</head> 
<body> 
<h1>Page Title</h1> 
{% include "pagepart_1.html" %} 
<br /><br /> 
{% include "pagepart_2.html" %} 
</body></html> 

この種のアプローチはうまくいきますが、少しオーバーヘッドがあると思います。 インスタンス(pagepart_1.html、pagepart_2.html、...)ごとに別々のテンプレートを作成しないようにすることはできますか?

メインページをこのように見えるようにするにはどうすればよいですか?

​​

ありがとうございます!

答えて

0

完全にカスタマイズ可能なコンテンツ領域を許可したいという唯一のアプローチです。あなたがたとえば、あなたが行うことができますが、それは常に順不同リストが表示されますよう、内容を標準化することができればしかし、:あなたのテンプレートで

<!-- greenbox.html --> 
<div style="background-color:#88ff88;"><br> 
    <ul> 
     {% for item in list %} 
     <li>{{ item }}</li> 
     {% endfor %} 
    </ul> 
</div> 

そしてを:

<!-- mypage.html --> 
{% with something as list %} 
    {% include 'greenbox.html' %} 
{% endwith %} 

あなたは多くを行うことができますより複雑な構造、さらには(ジャンゴ中1.3以降)複数の変数渡し:

<!-- greenbox.html --> 
<div style="background-color:#88ff88;"><br> 
    <h2>{{ title }}</h2> 
    <img style="float:{{ float }};" src="{{ image }}" alt="{{ alt_text }}"> 
    <p>{{ description }}</p> 
</div> 

<!-- mypage.html --> 
{% with title=obj.title image=obj.image.name alt_text=obj.title float="left" description=obj.description %} 
    {% include 'greenbox.html' %} 
{% endwith %} 
+0

ありがとうございました。実際には完全にカスタマイズ可能な領域が必要です。したがって、コンテンツの標準化は私の選択肢ではありません。次のアプローチを適用することもできます:[link](https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#parsing-until-another-block-tag-and-saving-contents )しかしそれにはまたいくらかのオーバーヘッドがあります。 – user893736

0

を私はHTMLを発するカスタムタグを記述し、それを複数回使用します。

関連する問題