[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