preguntas django y backbone.js

Estoy buscando hacer que backbone.js (más jQuery) funcione con mi aplicación django, pero tengo algunas preguntas. Nunca antes había usado una configuration tranquila, así que tengo muy poco conocimiento de la forma "adecuada" de usar REST.

  1. El backbone usa architecture REST, pero django no es compatible con esto por defecto. Parece que tastypie o piston son el path a seguir para implementar una API REST. ¿Esto significa que tengo que usar la API para cualquier llamada ajax que realice a través de la networking troncal? Si esto es correcto, ¿hay algún problema de performance u otras rarezas que deba conocer?

  2. La mayor parte de mi aplicación django requiere authentication. Según entiendo, una API REST no tiene ningún concepto de si un usuario está autenticado o no, entonces, ¿cómo lo manejo? ¿Todavía podré usar el decorador requerido de inicio de session con mis vistas o tengo que hacer algo más?

  3. ¿Qué pasa con el marco de permissions de Django, aún podré configurar / verificar permissions y grupos?

No dude en responder cada pregunta individualmente o si puede ver mi confusión general, indíqueme la dirección correcta.

Algo de esto es probablemente muy noobish para muchos de ustedes, pero me ha confundido, así que gracias de antemano por su ayuda.

puede señalar las collections / models de la networking troncal hacia cualquier URL que desee y analizar la respuesta como desee en las "subclasss" de su networking troncal.

Model.url:

http://documentcloud.github.com/backbone/docs/backbone.html#section-43

Collection.parse:

http://documentcloud.github.com/backbone/docs/backbone.html#section-69

Puede configurar controlleres de request únicos que pueden devolver algo de json para backbone para analizar / ingerir sin pistón o tastypie. Pero, sí, estas son dos buenas soluciones para REST completo con django.

Aquí hay algunos buenos consejos: http://joshbohde.com/blog/backbonejs-and-django para usar la networking troncal con tastypie.

Con tastypie, puede limitar el acceso a la API con autorización / authentication personalizada.

http://django-tastypie.readthedocs.org/en/latest/authentication_authorization.html

Puede crear un esquema de Autorización que garantice que la list de objects se filtra para que sea solo el object que el usuario "posee", algo como esto:

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() 

Alternativamente / adicionalmente, puede crear resources que solo devuelvan los objects del usuario sobrescribiendo el método ModelResource.apply_authorization_limits y asociar automáticamente al usuario con los objects creados anulando el método obj_create , algo así como:

 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) 

Luego, puede henetworkingar desde PerUserModelResource y / o hacer que PerUserAuthorization sea la autorización para el recurso.

 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'], } 

Backbone y django-tastypie están muy bien documentados. Tómese el time para build una testing de concepto simple y lea los documentos varias veces. Van juntos como guisantes y zanahorias.