DjangoでXMLとか吐くメモ
Django で XML とか吐くメモ。 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
- 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
まだ登録されていません。