0
다음 모델을 보유하고 있으며 사용자가 API django-tastypie로 이벤트에 가입 할 수 있도록 허용하려고합니다.django-tastypie와 함께 명령 API를 추가하는 가장 좋은 방법은 무엇입니까?
# Conceptual, may not work.
class Event(models.Model):
title = models.CharField('title', max_length=255)
users = models.ForeignKey(User)
def join(self, user):
self.users.add(user)
def leave(self, user):
self.users.remove(user)
# join the events with API like...
jQuery.post(
'/api/v1/events/1/join',
function(data) {
// data should be a joined user instance
// or whatever
alert(data.username + " has joined.");
},
);
하지만이 작업을 수행하는 가장 좋은 방법은 없습니다.
# Conceptual, may not work.
class EventJoinResource(Resource):
action = fields.CharField(attribute='action')
def post_detail(self, request, **kwargs):
pk = kwargs.get('pk')
action = kwargs.get('action')
instance = Event.objects.get(pk=pk)
getattr(instance, action)(request.user)
resource = EventJoinResource()
# ??? I don't know how to write this with django-tastypie urls
urlpatterns = patterns('',
('r'^api/v1/events/(?P<pk>\d+)/(?P<action>join|leave)/$', include(resource.urls)),
)
어떻게해야합니까? EventJoinResource
을 작성해야합니까? 모든 제안은 환영합니다 :-)
Sorro I ''EventTypeResource''로 무엇을 의미하는지 모르겠다. 제안을 통해 사용자가 특정 이벤트에 어떻게 참여할 수 있습니까? join과 leave를위한 "join"과 같은 타입을 건네 주어야 할까? –
RESTful API에는 조작 또는 메소드 호출 (RPC와 유사한 API의 특성 임)이 없어야합니다. 따라서 이벤트에 참여하기보다는 이벤트를 작성해야합니다 (이벤트를 조작하십시오). EventTypeResource는 가입 또는 탈퇴와 같은 여러 이벤트를 구별하는 데 도움을줍니다. 그래서 네, 가장 간단한 형태의 EventTypeResource는 하나의 속성 "label"또는 "name"을 가질 수 있고 ToOneField()를 통해 EventResource와 관련 될 수 있습니다. 그런 다음 "사용자가 이벤트에 참여 함"은 관련된 EventTypeResource "join"에 대해 생성되는 EventResource로 표현됩니다. – kgr
나는 본다. 고마워요! –