Django - использовать XML - RESTful - PullRequest
0 голосов
/ 29 марта 2011

У меня на локальном хосте нормально работает скрипт Python.Это не корпоративное приложение или что-то, просто то, с чем я играю.Использует библиотеку «бутылка».Приложение в основном использует XML-файл (хранящийся локально или онлайн), который содержит элементы со своими собственными уникальными идентификаторами, а также некоторые координаты, например, 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 Ответ

1 голос
/ 08 декабря 2011

Я воспринял твой вопрос как возможность узнать немного больше о Джанго. Я использовал Книгу Джанго в качестве ссылки.

Начиная с пустого сайта 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 содержит много информации, в том числе о том, как ее развернуть на рабочем сервере.

...