XML出力(設定) †soundkitchenさんのDjangoでXMLとか吐くメモをやっただけなので、soundkitchenさんのサイトを参考にしたほうがよいかと思います。 プロジェクトの作成 †# django-admin.py startproject xmlprj # cd xmlprj # python manage.py runserver PostgreSQLのDB作成 †# createdb -E UTF-8 *** アプリケーション作成 †# python manage.py startapp display Setting.pyの編集 †INSTALLED_APPSに「django.contrib.admin」を追加。 # vim settings.py DATABASE_ENGINE = 'postgresql_psycopg2' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. DATABASE_NAME = '***' # Or path to database file if using sqlite3. DATABASE_USER = '***' # Not used with sqlite3. DATABASE_PASSWORD = '***' # Not used with sqlite3. DATABASE_HOST = 'localhost' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. TEMPLATE_DIRS = ( "/home/user/templates", ) DB作成 †# python manage.py syncdb モデル作成 †# vim display/models.py CRATE TABLE SQL文を表示 †# python manage.py sql display INSERT 文の作成 †# mkdir display/sql # vim display/sql/member.sql INSERT INTO display_member(member_name1,member_name2,prefectural_id,member_address1)VALUES(・・・ テーブル作成 †# python manage.py syncdb URLconfの設定 †# cp urls.py display/urls.py # vim urls.py from django.conf.urls.defaults import * urlpatterns = patterns('xmlprj.display.views', (r'^display/', include('xmlprj.display.urls')), ) # display/urls.py from django.conf.urls.defaults import * urlpatterns = patterns('xmlprj.display.views', (r'^admin/', include('django.contrib.admin.urls')), (r'^$', 'index'), ) ビュー作成 †# vim display/views.py from django.template import Context, loader from django.http import HttpResponse from django.shortcuts import render_to_response from xmlprj.display.models import Member //文字列を出力する def index(request): return HttpResponse("Hello, world.") //HTMLファイルを出力する def detail(request): t = loader.get_template('display/detail.html') c = Context() return HttpResponse(t.render(c)) //XMLファイルを出力する def member(request): t = loader.get_template('display/member.xml') c = Context() return HttpResponse(t.render(c), mimetype='text/xml; charset=utf-8') //XMLファイルを出力する(データをXMLファイルに渡す) def member2(request): p = {} p['status'] = 1 p['msg'] = 'Success' t = loader.get_template('display/member2.xml') c = Context({'data':p}) return HttpResponse(t.render(c), mimetype='text/xml; charset=utf-8') //ショートカットを使う def member3(request): p = {} p['status'] = 1 p['msg'] = 'Success' return render_to_response('display/member3.xml', {'data':p}, mimetype="application/xhtml+xml") //DBから値を取得し表示する def member4(request): try: list = Member.objects.filter(member_delete_flag=False).values('member_id', 'member_name1').order_by('-member_insert', 'member_id') except Member.DoseNotExist: p = {} p['satus'] = 9 p['msg'] = 'Error' return render_to_response('display/member4.xml', {'data':p}, mimetype="application/xhtml+xml") #raise Http404 p = {} p['status'] = 1 p['msg'] = 'Success' p['member'] = list return render_to_response('display/member4.xml', {'data':p}, mimetype="application/xhtml+xml") //DBにUPDATEし表示する def change(request, member_id, status_id, query): id = member_id name1 = status_id try: m = Member.objects.get(member_id=id) m.member_name19 = name1 m.save() # DoseNotExist = get(1つも値がないとき?) # AssertionError = get(値がいっぱいありすぎちゃうとき?) except Member.DoesNotExist: p = {} p['status'] = 9 p['msg'] = 'Error' return render_to_response('display/change.xml', {'data':p}, mimetype="application/xhtml+xml") #raise Http404 p = {} p['status'] = 1 p['msg'] = 'Success' return render_to_response('display/change.xml', {'data':p}, mimetype="application/xhtml+xml") Detailテンプレート作成 †# vim /templates/display/detail.html 内容略。 Memberテンプレート作成 †member.xml †# vim display/templates/display/member.xml <?xml version="1.0" encoding="utf-8" ?> <info> <member> <array> <member_id>1</member_id> <member_name1>name1</member_name1> </array> </member> </info> member4.xml †# vim display/templates/display/member4.xml <?xml version="1.0" encoding="utf-8" ?> <info> <status>{{ data.status }}</status> <msg>{{ data.msg }}</msg> {% if data.member %} {% for value in data.member %} <member> <array> <member_id>{{ value.member_id }}</member_id> <member_name1>{{ value.member_name1 }}</member_name1> </array> </member> {% endfor %} {% endif %} </info> フォルダ構成 †path/ | |-- __init__.py |-- __init__.pyc |-- manage.py |-- setting.py |-- setting.pyc |-- urls.py |-- urls.pyc | |-- display/ | | | |-- __init__.py | |-- __init__.pyc | |-- models.py | |-- models.pyc | |-- urls.py | |-- urls.pyc | |-- views.py | |-- views.pyc | | | |-- sql/ | | |-- ***.sql | | |-- ***.sql | | | |-- templates/ | |-- 404.html | |-- 500.html | | | |-- display/ | |-- change.xml | |-- detail.xml | |-- member.xml | |-- member2.xml | |-- member3.xml | |-- member4.xml | 確認 †ブラウザから「http://localhost:8000/display/」が表示されるか確認する。 # python manage.py runserver URLメモ †http://localhost:8000/display/
Comment †
Counter: 12575,
today: 2,
yesterday: 0
|