Django のテンプレートシステムをローカルアプリケーションで使う
Python で実装された Web アプリケーションフレームワーク Django の HTML テンプレートエンジンだけを、スタンドアロン(ローカル・アプリケーション)で利用します。
以下の Python スクリプトを renderer.py などの名前で保存して、実行します。
#!/usr/bin/env python # -*- coding: utf-8 -*- import os from django.template import Context, Template from django.conf import settings import codecs, sys sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) # テンプレートシステムをスタンドアロンモードに設定 settings.configure(DEBUG=True, TEMPLATE_DEBUG=True, TEMPLATE_DIRS=()) def generate(template_name, template_values={}): directory = os.path.dirname(__file__) path = os.path.join(directory, template_name) template = Template(open(path).read()) context = Context(template_values) return template.render(context)
以下はテンプレート用 HTML ファイルの例。
<!-- template.html --> <div id="my-content"> {% for entry in entries %} <div class="my-entry"> <p>{{ entry.word }}</p> {% for image in entry.images %} <div class="my-image"> <img src="{{ image }}" alt="{{ entry.word }}" /> </div> {% endfor %} </div> {% endfor %} </div>
template.html の解析用に、renderer.py の末尾に以下を追加します。
def main(): values = { 'entries': [ { 'word': 'minecraft', 'images': ['http://t3.gstatic.com/images?q=tbn:ANd9GcTTkWQ_QFXFrYxDCFV0Y6LP1pFnWhMSoiIzj5fsmT0QlwQ4VDPsaBGfiaaS', 'http://t2.gstatic.com/images?q=tbn:ANd9GcTBfkEbsnB9v5qlJWe2lSRp9MIsPKRB93tpOsV2v3yFvnl_bWhC_xscKb8'], }, { 'word': u'パワプロ', 'images': ['http://t2.gstatic.com/images?q=tbn:ANd9GcT0UZ0KiCTQGIUuifYOJLNweUXJTdvb4pU55m9ITGmhjhi3PFq_LxvjzD4', 'http://t3.gstatic.com/images?q=tbn:ANd9GcRLZ_ec5mUYdW9kTmxOjRYUzeSseyx5hhdCjif-k1-mv_t5PxSTc3PsJpEQ'], }, ] } print generate('template.html', values) if __name__ == '__main__': main()
実行結果は以下のようになります。
参考:Python プログラマのための Django テンプレート言語ガイド — Django v1.0 documentation
開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)
- 作者: 増田泰,中居良介,露木誠,松原豊
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2008/06/19
- メディア: 単行本
- 購入: 13人 クリック: 196回
- この商品を含むブログ (46件) を見る