[pyar] como configurar Django+tastypie+backbone?

Ariel Camino arielcamino en gmail.com
Dom Feb 10 13:31:15 ART 2013


Efectivamente tenes razón, cree una ApiKey, y por más que la envía
correctamente en el header, tastypie devuelve 401 UNAUTHORIZED.

Incluso armé mi propia clase de autenticación, para verificar que el
header llegue correctamente:

(Pdb) request.META['HTTP_AUTHORIZATION']
'ApiKey acamino:28d65c6dc167818e85ee4f33164187b541cbc654'

Lo único raro que noté es que en tu repo pusiste un espacio de más en
blanco, antes de ApiKey, en backbone-tastypie.js linea 42:
https://github.com/herrmendez/poll-app-backbone/blob/master/poll_app/static/js/lib/backbone-tastypie.js#L42

Más allá de eso, el problema está del lado del backend, no de backbone,
que está armando bien el request, y no es un tema de urls.

Estuve mirando el repo de django-tastypie, y los tipos están commiteando
muy seguido, así que supuse que era algun bug de la versión que estás
usando (0.9.11).

SOLUCIÓN:

1- Volá la versión que tenes en virtualenv:
pip uninstall django_tastypie

2- Clonate el repo:
git clone https://github.com/toastdriven/django-tastypie.git

3- Mové tastypie a tu pythonpath:

mv django-tastypie/tastypie [tupath]/poll-app-backbone/tastypie

4- y walla! funciona:

POST http://127.0.0.1:8000/api/v1/poll/ 201 CREATED
(con ApiKeyAuthentication() )

Habría que avisarle a la gente de tastypie que la versión que está
empaquetada en PyPi tiene este problema, ¿vos creaste un issue?

Saludos!
-- 
Ariel Camino

El 10/02/13 07:19, Federico Mendez escribió:
> Hola Ariel,
> 
> Para la ApiKey uso el post_save que esta al final de este
> archivo: https://github.com/herrmendez/poll-app-backbone/blob/master/polls/api.py
> 
> Cuando guardas un usuario nuevo, automaticamente le genera el ApiKey.
> Esto funciona para los usuarios que agregas, si estas tratando de
> conseguir la api key de tu superuser tenes que agregarlo manualmente. En
> vez de usar create_api_key() anda a la consola, trae la instancia de tu
> usuario, importa tastypie.models.ApiKey y guarda un objeto pasandole tu
> usuario:
> 
>>>> from tastypie.models import ApiKey
>>>> from django.contrib.auth.models import User
>>>> u = User.objects.get(pk=1)
>>>>ApiKey(user=u)
>>>>ApiKey.save()
> 
> Si despues te fijas en la tabla te tendria que aparecer tu ApiKey. Ya se
> que con Authentication() lo puedo hacer sin drama, pero en una situacion
> mas realista esto seria necesario y no encontre data de como usar esto
> en ningun lado. Si hago el request por cURL no tengo drama, siempre y
> cuando pase el authorization header por GET (curl --dump-header --H
> "Content-Type: application/json"-X POST --data '{"question": "Is a test
> yo?", "pub_date":
> "2011-05-22T00:46:38"}'"http://localhost:8000/polls/api/v1/poll/?username=federico&api_key=10a2d3586e63078ef39f9da8f9aa9209715ed282
> ).
> 
> 
> 
> 
> 2013/2/9 Ariel Camino <arielcamino en gmail.com <mailto:arielcamino en gmail.com>>
> 
>     Estuve usando tu app, sin autenticación anda perfecto, es decir
>     poniendo:
> 
>     authentication = Authentication()
> 
>     POST http://127.0.0.1:8000/api/v1/poll/ 201 CREATED 204ms
> 
>     Lo que no logré hacer es que se genere una ApiKey relacionada a mi
>     usuario, el signal que pusiste en api.py no parece hacer nada, y si
>     intento hacerlo a mano estoy en la misma:
> 
>     (venv)acamino en athos:~/pruebas/poll-app-backbone$ python manage.py shell
>     Python 2.7.3 (default, Aug  1 2012, 05:16:07)
>     [GCC 4.6.3] on linux2
>     Type "help", "copyright", "credits" or "license" for more information.
>     (InteractiveConsole)
>     >>> from tastypie.models import create_api_key
>     >>> from django.contrib.auth.models import User
>     >>> create_api_key(User.objects.all()[0])
>     >>> from tastypie.models import ApiKey
>     >>> ApiKey.objects.all()
>     []
> 
>     cómo hiciste para obtener tu ApiKey?
> 
>     Saludos!
>     --
>     Ariel Camino
>     _______________________________________________
>     pyar mailing list pyar en python.org.ar <mailto:pyar en python.org.ar>
>     http://listas.python.org.ar/listinfo/pyar
> 
>     PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> 
>     La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
>     de Argentina - http://www.usla.org.ar
> 
> 
> 
> 
> -- 
> Mit freundlichen Grüßen, 
> Federico Mendez
> 
> 
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
> 
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> 
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
> 





More information about the pyar mailing list