blog.hekt.org

Google App EngineでDjangoのテンプレートを使うメモ

忘れそうな内容なのでメモっておきます。

GAEで使われるDjangoは通常0.96だけど、(Django関係をインポートする前に)以下のように指定してやると1.2が使える。(近い将来デフォルトのバージョンを変更する、という警告が少なくとも2月以前から表示されるらしい)

from google.appengine.dist import use_library
use_library('django', '1.2')

1.0以降ではtemplate.render()がstrじゃなくunicodeリテラルを返してくるため、ちゃんとエンコードしないといけない。

{% spaceless %}テンプレートタグは、1.0以降ではHTMLのタグとタグの間の空白及び改行をすべてはぎ取り、0.96ではそれらをスペース一つに置き換える。

display:inline;したときのためだけに姑息なことをやりたくないとは常々思っていたので、1.0以降の機能はかなり重宝する。(0.96のはどういうときに使うんだろう?)

<ul>
    <li>hoge</li><!--
 --><li>fuga</li
   ><li>nyan</li></ul>
<!--/ul-->

とかやってたのが、こんな感じでスッキリ書ける:

{% spaceless %}
<ul>
    <li>hoge</li>
    <li>fuga</li>
    <li>nyan</li>
</ul>
{% endspaceless %}

出力はこんな感じに:

<ul><li>hoge</li><li>fuga</li><li>nyan</li></ul>

0.96ではこうなってインライン要素にした際の空白対策という点ではまったく意味がない:

<ul> <li>hoge</li> <li>fuga</li> <li>nyan</li> </ul>