那麼,首先你可以使用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