您可以將骨幹集合/模型指向任何您想要的url並解析您想要的骨幹「子類」中的響應。
Model.url:
http://documentcloud.github.com/backbone/docs/backbone.html#section-43
Collection.parse:
http://documentcloud.github.com/backbone/docs/backbone.html#section-69
您可以設置一次性請求處理,可以返回一些JSON爲骨幹,以解析/攝取不活塞或tastypie。但是,是的,這對於使用django的綜合REST來說是兩個很好的解決方案。
這裏有一些很好的提示:http://joshbohde.com/blog/backbonejs-and-django使用骨幹與tastypie。
使用tastypie,您可以通過自定義授權/驗證來限制對api的訪問。
http://django-tastypie.readthedocs.org/en/latest/authentication_authorization.html
您可以創建一個授權方案,該方案可以確保對象列表進行過濾,只在該用戶「擁有」這樣的對象,東西:
class PerUserAuthorization(Authorization):
def apply_limits(self, request, object_list):
if request and hasattr(request, 'user'):
if request.user.is_authenticated():
object_list = object_list.filter(user=request.user)
return object_list
return object_list.none()
或者/附加,您可以通過覆蓋ModelResource.apply_authorization_limits
方法來創建只返回用戶對象的資源,並通過覆蓋obj_create
方法自動將用戶與創建的對象關聯起來,如下所示:
class PerUserModelResource(ModelResource):
def obj_create(self, bundle, request=None, **kwargs):
return ModelResource.obj_create(self, bundle, request, user=request.user)
def apply_authorization_limits(self, request, object_list):
return object_list.filter(user=request.user)
然後,您可以從PerUserModelResource繼承和/或使PerUserAuthorization成爲資源的授權。
class ImageGroupResource(PerUserModelResource):
study = fields.ForeignKey(StudyResource, "study")
uploads = fields.ToManyField('cm.api.UploadResource', 'uploads', null=True)
class Meta:
queryset = ImageGroup.objects.all()
list_allowed_methods = ['get', 'post']
detail_allowed_methods = ['get', 'post', 'put', 'delete']
resource_name = 'cm/imagegroup'
authorization = PerUserAuthorization()
filtering = {
'name': ALL,
'created_dt': ['exact', 'range', 'gt', 'gte', 'lt', 'lte'],
}
骨幹和django-tastypie有很好的記錄。花時間建立一個簡單的概念驗證並閱讀文檔幾次。他們像豌豆和胡蘿蔔一樣走到一起。
感謝您的回覆。關於權限和組,是否可以實現和使用它們? – imns
當然,只需使用相同的方法,而不是僅使用用戶的身份來應用限制,而是使用組狀態或任意條件。 –