DjangoでXMLとか吐くメモ

DjangoXML とか吐くメモ。 template 部分の勉強も含めて簡単に試してみた。

まずは簡単に静的なファイルの吐き出し。

xml_test1.xml

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <errorcode>0</errorcode>
</response>

views.py

from django.http import HttpResponse
from django.template import loader, Context, RequestContext


def xml_test1(request):

    t = loader.get_template('example/xml_test1.xml')
    c = Context()
    return HttpResponse(t.render(c), mimetype='text/xml; charset=utf-8')

HttpResponse の引数に mimetype を渡す事でヘッダに適応してくれる。念のために charset も指定しておく方が良いと思う。 Firefox で確認してみたら、 XSLT に関連づけされていないのでドキュメントツリーが見れた。

次に適当に変数を渡してみる。

xml_test2.xml

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <errorcode>{{ errorcode }}</errorcode>
    {% if message %}
    <message>{{ message }}</message>
    {% endif %}
</response>

views.py の続き。

def xml_test2(request):

    p = {}
    p['errorcode'] = 1
    p['message'] = 'This is test message.'
    t = loader.get_template('example/xml_test2.xml')
    c = Context(p)
    return HttpResponse(t.render(c), mimetype='text/xml; charset=utf-8')

Firefox で見るとこんな感じ。

<response>
    <errorcode>1</errorcode>
    <message>This is test message.</message>
</response>

ちゃんとパースされてる。(当たり前)

ココでちょっとソースを見てみると render_to_string なんてのもある。 引数は全部で3つで、それぞれテンプレートのパス・テンプレート変数(dictionary)・コンテクスト(context_instance)。うち必須はテンプレートのパスだけ。 今度はコレを使ってテストみる。テンプレートはさっきの xml_test2.xml を使い回し。

def xml_test3(request):

    p = {}
    p['errorcode'] = 0
    return HttpResponse(
        loader.render_to_string('example/xml_test2.xml', p),
        mimetype='text/xml; charset=utf-8'
    )

Firefox で確認するとこんな感じになった。

<response>
    <errorcode>0</errorcode>
</response>

今回は message をテンプレートに渡してないので、 message の部分はちゃんと非表示になってる。

以下まとめ?

  • 基本的には HTML と操作は同じ。
  • render_to_response はデフォルトだと使えない。
  • mimetype 指定である程度はこなせる。
  • もっと詳しい情報は 本家サイト和訳ドキュメント で。
Posted at: 
2007/07/04 03:08:58
0 Comments
1 TrackBack
Tags: 
Django
Python
templates
Trackback: 
http://humming.via-kitchen.com/2007/07/04/output-xml-file/trackback/

TrackBacks

Python + Django + OpenLaszlo - プログラマの実態

OpenLaszloで何か新しいことはできないか?
2007〜2008年にかけて、こんなことを会社の先輩と話をしていました。

Created at: 
2008/03/15 22:21:22

Comments

まだ登録されていません。

Add Comment

Add Comment