我正在寻找借口来学习Django的新项目.通常,我喜欢构建RESTful服务器端接口,其中URL映射到在某些独立于平台的上下文(例如XML或JSON)中吐出数据的资源.这在没有使用框架的情况下是相当简单的,但是其中一些如Ruby on Rails可以根据您现有的模型代码,方便地根据您传递的URL类型轻松地将XML反射回客户端.
我的问题是,像Django这样的东西是否支持这个?我用Google搜索并发现了一些可以放在Django之上的"RESTful"第三方代码.不确定我是否太热衷于此.
如果不是Django,任何其他Python框架已经构建了这个,所以我不必重新发明轮子,因为我已经有像PHP这样的语言?
这可能很容易做到.
URL映射很容易构建,例如:
urlpatterns = patterns('books.views', (r'^books/$', 'index'), (r'^books/(\d+)/$', 'get'))
Django支持模型序列化,因此很容易将模型转换为XML:
from django.core import serializers from models import Book data = serializers.serialize("xml", Book.objects.all())
将两者与装饰器相结合,您可以构建快速,快速的处理程序:
from django.http import HttpResponse from django.shortcuts import get_object_or_404 def xml_view(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) return HttpResponse(serializers.serialize("xml", result), mimetype="text/xml") return wrapper @xml_view def index(request): return Books.objects.all() @xml_view def get(request, id): return get_object_or_404(Book, pk=id)