Django - 解析XML - RESTful
我有一个在本地运行得很好的Python脚本。这个脚本不是企业级应用,只是我在玩的一些东西。它使用了“bottle”这个库。这个应用基本上是处理一个XML文件(这个文件可以存储在本地或者在线),里面有一些独特的ID和一些坐标,比如输入mysite.com/23就能返回ID为23的元素的经纬度。我想大家对REST应该都不陌生。
现在,我想把这个应用放到网上,但我找不到支持“bottle”的主机。不过,我找到了一家安装了django的主机。
所以,我的问题是,把下面的代码从bottle转换到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 个回答
1
我把你的问题当成了一个机会,想多学一点关于Django的知识。我参考了《Django书籍》。
从一个空的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书籍》里有很多信息,包括如何在生产服务器上部署这个项目。