FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Google App Engine for Python] webappでDjango1.2のテンプレートを使う

GAE/Pでプログラミングしていたら、
「Djangoのデフォルトのバージョンが変わる予定だから、 use_library() でバージョンを指定してね」
というWARNINGがログに出ていた。
自分が作成したプログラムのDjangoテンプレートを0.96から1.2へ変更したので、やり方をまとめる。

1. Djangoのバージョンを指定する
webappフレームワークでDjangoテンプレートを使用する方法は、テンプレートの使用を参照。
Djangoのバージョンを指定する方法は、Third-party Python Libraries に記述されている。
日本語訳には(現時点では)記述されていない。

App Engine SDKには、Django0.96とDjango1.2が標準で入っている。
以下のようにしてバージョンを指定する。
  from google.appengine.dist import use_library
  use_library('django', '1.2')
  from google.appengine.ext.webapp import template
以下の点に注意すること
・import template の前に use_library() すること
・アプリケーション内でDjangoのバージョンを統一すること
他のプログラムがimport templateした後、use_library()で別のバージョンを指定するとエラーになる。

2. Django1.2のテンプレートに関するドキュメント
Django1.2のテンプレートでは、
  {% if var1 != var2 and var1 != var3 %}
    var1 is not var2 and var1 is not var3<br>
    {% if var1 == 1 and var2 > 1 or var3 == 0 %}
      (var1 equals 1 and var2 is larger than 3) or var3 equals 0<br>
    {% endif %}
  {% endif %}
のような記述ができる。

Djangoテンプレートの日本語訳ドキュメントは、Django1.0しか見つけられなかった。
Django テンプレート言語
組み込みタグ/フィルタリファレンス

Django1.2のテンプレートに関するドキュメント(英語)は以下
The Django template language
Built-in template tags and filters
Built-in template tags and filters を 'New in Django' と 'Changed in Django' でページ内検索すれば、Django1.1以降の変更点がわかる。

3. Django0.96からDjango1.2へ変更する場合の注意点
Django 1.0でHTMLの自動エスケープが導入されている。
< > ' " & が勝手にエスケープされるため、HTML文をテンプレートに渡しているプログラムは動きがおかしくなる。
自動エスケープをオフにする方法は、自動エスケープを切るにはを参照。

以上。
自分はログを見てたまたま気づいたけど、GAEのDjangoデフォルトバージョンが変わったとたんに動かなくなるケースがありそう。開発者が放置しているアプリとか。
スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。