2011-03-28 8 views
0

私は自分のlocalhost上で正常に動作しているpythonスクリプトを持っています。それはエンタープライズアプリケーションではなく、何か私は周りに遊んでいる何か。それは "ボトル"ライブラリを使用します。このアプリは基本的にXMLファイル(ローカルまたはオンラインのいずれかに保存されています)を使用しています。そこには固有のIDと座標が含まれています。たとえば、mysite.com/23は要素23の緯度/経度を返します。とにかくこの段階でRESTに精通しています。Django - XMLを消費する - RESTful

これをオンラインにしたいと思いますが、「ボトル」をサポートするホストを見つけるのに問題がありました。しかし、私はdjangoがインストールされているホストを見つけました。

私の質問は、次のコードをボトルからdjangoに変換することはどれほど難しいでしょうか?そして、誰かが私にいくつかの指針を与えることができますか?私は共通のPythonライブラリを使用しようとしました。

ありがとうございました。

from xml.dom.minidom import parseString 
from bottle import route, run 
import xml 
import urllib 

file = open('myfile.xml','r') 
data = file.read() 
dom = parseString(data) 
@route('/:number') 
def index(number="1"): 
    rows = dom.getElementsByTagName("card")[0].getElementsByTagName("markers")[0].getElementsByTagName("marker") 
    for row in rows: 
     if row.getAttribute("number") == str(number): 
      return str(xml.dumps({'long': row.getAttribute("lng"), 'lat': row.getAttribute("lat")}, sort_keys=True, indent=4)) 
    return "Not Found" 


run(host='localhost', port=8080) 
+0

ファイルを自分で読み込み、 'parseString'で解析する代わりに、' xml.minidom.parse'を使うことができます。 –

答えて

1

私はあなたの質問をDjangoについてもう少し詳しく学ぶ機会とみなしました。私は参考としてThe Django Bookを使用しました。これに

from django.conf.urls.defaults import patterns, include, url 
from testsite.views import index 

urlpatterns = patterns('', 
    url(r'^(\d+)$', index), 
) 

そしてviews.py

from django.http import HttpResponse 
from xml.dom.minidom import parseString 
import xml 
import urllib 

def index(request, number): 
    data = open('myfile.xml', 'r').read() 
    dom = parseString(data) 
    rows = (dom.getElementsByTagName("card")[0] 
       .getElementsByTagName("markers")[0] 
       .getElementsByTagName("marker")) 

    for row in rows: 
     if row.getAttribute("number") == str(number): 
      return HttpResponse(str(xml.dumps({'long': row.getAttribute("lng"), 
        'lat': row.getAttribute("lat")}, sort_keys=True, indent=4))) 
    return HttpResponse("Not Found") 

警告:

は空のDjangoのサイト(django-admin.py startproject testsite)以降では、私がこれまでurls.pyを変更した私は、XMLをテストしていませんでしたコードは、私がpython manage.py runserverでテストしたDjango関連のものだけです。

Django Bookには、これを運用サーバーに展開する方法を含む多くの情報が含まれています。

+0

'HttpResponseNotFound'を使って、ステータスメッセージ404の応答を返すことができます。 'HttpResponse(...、mimetype = "application/xml") 'も役に立ちます。 –

+0

@ ib.lundgrenありがとう!私はeoinzyのコードのDjangoへの正確な翻訳を行うことによってあまりにも疎遠にされたと思います。 :)私は私のポストを更新します。 – Helgi

関連する問題