【问题标题】:Django - consume XML - RESTfulDjango - 使用 XML - RESTful
【发布时间】:2011-12-08 06:03:51
【问题描述】:

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

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

【问题讨论】:

  • 您可以使用xml.minidom.parse,而不是自己读取文件并使用parseString解析它

标签: python django rest bottle


【解决方案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 包含很多信息,包括如何在生产服务器上部署它。

【讨论】:

  • HttpResponseNotFound 可用于返回带有状态消息 404 的响应。´HttpResponse(..., mimetype="application/xml")` 也很有帮助。
  • @ib.lundgren 谢谢!我想我把 eoinzy 的代码准确地翻译成 Django 太激动了。 :) 我会更新我的帖子。
猜你喜欢
  • 2012-05-22
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多