那么,首先你可以使用django-piston,就像@Tudorizer已经提到的那样。
但是,当我看到它(并且我可能错了!)时,REST更多的是一套设计指南,而不是具体的API。它基本上说的是,与服务的交互不应该基于'你可以做的事情'(典型的RPC风格的方法),而是'事情,你可以以可预见的方式采取行动,以某种方式组织'( '资源'实体和http动词)。
这就是说,你不需要额外的东西来编写使用Django的REST风格的服务。
考虑以下几点:
# urlconf
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('',
url(r'^tickets$', 'myapp.views.tickets', name='tickets'),
url(r'^ticket/(?P<id>\d+)$', 'myapp.views.tickets', name='ticket'),
url(r'^ticket$', 'myapp.views.tickets', name='ticket'),
)
# views
def tickets(request):
tickets = Ticket.objects.all()
return render_to_response('tickets.html', {'tickets':tickets})
def ticket(request, id=None):
if id is not None:
ticket = get_object_or_404(Ticket, id=id)
if request.method == 'POST':
# create or update ticket here
else:
# just render the ticket (GET)
...
...等等。
重要的是你的服务如何暴露给用户,而不是它使用的库/工具箱/框架。
没有扭曲(http://twistedmatrix.com/trac/wiki/Documentation)给你?我碰巧喜欢它,因为它确实关注的不是GUI的东西,而是服务。 – extraneon 2010-09-05 09:59:26