javascript python django backbone.js

javascript - preguntas django y backbone.js



python (1)

puede señalar las colecciones / modelos de la red troncal hacia cualquier URL que desee y analizar la respuesta como desee en las "subclases" de su red 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 manejadores de solicitud ú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 red troncal con tastypie.

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

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

Puede crear un esquema de Autorización que garantice que la lista de objetos se filtra para que sea solo el objeto 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 recursos que solo devuelvan los objetos del usuario sobrescribiendo el método ModelResource.apply_authorization_limits y asociar automáticamente al usuario con los objetos 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 heredar 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 tiempo para construir una prueba de concepto simple y lea los documentos varias veces. Van juntos como guisantes y zanahorias.

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 configuración tranquila, así que tengo muy poco conocimiento de la forma "adecuada" de usar REST.

  1. El backbone usa arquitectura REST, pero django no es compatible con esto por defecto. Parece que tastypie o piston son el camino 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 red troncal? Si esto es correcto, ¿hay algún problema de rendimiento u otras rarezas que deba conocer?

  2. La mayor parte de mi aplicación django requiere autenticación. 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 sesión con mis vistas o tengo que hacer algo más?

  3. ¿Qué pasa con el marco de permisos de Django, aún podré configurar / verificar permisos 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.