Hatena::Grouppython

nelnal@python

2009-08-19

[] 「Django Book」をやってみる:Chapter 4 Templates 22:55  「Django Book」をやってみる:Chapter 4 Templates - nelnal@python を含むブックマーク はてなブックマーク -  「Django Book」をやってみる:Chapter 4 Templates - nelnal@python

テンプレートのサンプル

<html>
<head><title>Ordering notice</title></head>

<body>

<h1>Ordering notice</h1>

<p>Dear {{ person_name }},</p>

<p>Thanks for placing an order from {{ company }}. It's scheduled to 
ship on {{ ship_date|date:"F j, Y" }}.</p>

<p>Here are the items you've orderd:</p>

<ul>
{% for item in item_list %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

{% if ordered_warranty %}
    <p>Your warranty infomation will be included in the packaging.</p>
{% else %}
    <p>You didn't order a warranty, so you're on your own when 
    the products inevitably step working.</p>
{% endif %}

<p>Sincerely,<br />{{ company }}</p>

</body>
</html>

解説

上記文書の内、中括弧({,})で囲まれた部分は変数となります。

{{ person_name }}


{% for item in item_list %}

...

{% endfor %}


{% if ordered_warranty %}

...

{% else %}

...

{% endif %}

中括弧の中に記載された名前がキーワードとして使用されることになります。


{%」と「%}」に囲まれた部分は値によって処理の切り替えの為のテンプレート記法です。

{% if ordered_warranty %}


forはsequenceタイプのデータを渡して格納されている要素を個別に文書に反映する為に使用します。

ifは変数として渡したデータが有効かどうか(True判定になるか)で表示(またはその他の処理の記述)を切り替える為に使用します。


また、変わった使用方法として第2段落のテンプレート記法があります。

{{ ship_date|date:"F j, Y" }}

これは日付データ*1の表示形式を変更する記法です。


テンプレートシステムを試してみる。

ここではシェルを使ってテンプレート記法とその変換処理を試してみます。

シェルで

$ python manage.py shell

と打ってシェルを実行します。

この様にシェルを呼び出さないと django モジュールを呼び出すことが出来ません。


それではテンプレートのテストをしてみます。

>>> from django import template
>>> t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.


Next --> Chapter4 その2

*1:datetimeモジュール使用

トラックバック - http://python.g.hatena.ne.jp/nelnal_programing/20090819