Django - 使用XML - RESTful

时间:2011-03-28 20:03:45

标签: python django rest bottle

我的本​​地主机上有一个正常运行的python脚本。它不是企业应用程序或任何东西,只是我正在玩的东西。它使用“瓶子”库。该应用程序基本上消耗一个XML文件(存储在本地或在线),其中包含具有自己唯一ID的元素,以及一些坐标,例如mysite.com/23将带回元素23的纬度/长度。我敢肯定无论如何,你在这个阶段都熟悉REST。

现在,我想把它放到网上,但是找不到支持“瓶子”的主机却遇到了麻烦。但是,我找到了一个安装了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)

1 个答案:

答案 0 :(得分:1)

我把你的问题作为一个学习更多关于Django的机会。我使用The Django Book作为参考。

从空的Django网站(django-admin.py startproject testsite)开始,我已将urls.py更改为:

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")

警告:我没有测试过XML代码,只测试了与Django相关的代码,我已经通过python manage.py runserver进行了测试。

Django Book包含大量信息,包括如何在生产服务器上部署它。