not method framework allowed django post oauth django-rest-framework http-status-code-405

framework - method not allowed(post) django



405 POST método no permitido (1)

Esto fue resuelto en los comentarios del

Problema resuelto, echo de menos un corte en la url.

Este código de respuesta (405) puede provenir de cualquier cantidad de problemas, pero generalmente significa que está utilizando una URL incorrecta (como en este caso), o está utilizando el método de solicitud incorrecto. ¡A veces son las dos!

Muy a menudo veo que las personas obtienen este problema cuando intentan actualizar un recurso individual ( /api/res/1 ), pero están usando la lista url ( /api/res ) que no permite que se realice la solicitud. Esto también puede ocurrir al revés, cuando alguien intenta crear una nueva instancia, pero están enviando una solicitud POST al objeto individual.

En algunos casos, se está utilizando la URL incorrecta, por lo que los usuarios solicitan una vista estándar que no sea API y piensan que es una vista API ( /res lugar de /api/res ). ¡Asegúrate de comprobar siempre tus URL!

Estoy intentando desarrollar un proveedor de REST con OAuth. Estoy usando Django RESTFramework y DjangoOAuthToolkit. Hice un GET y funciona perfectamente, pero estoy tratando de usar un POST y el servidor responde con {"detalle": "Método ''POST'' no permitido."} Este es mi código:

# views.py @api_view([''POST'']) def pruebapost(request): usuario = User() access_token = Token.objects.get( key=request.POST[''oauth_token''] ) usuario = access_token.user content = {''saludo'': usuario.username} return Response(content) # settings.py OAUTH_AUTHORIZE_VIEW = ''principal.views.oauth_authorize'' SESSION_SERIALIZER = ''django.contrib.sessions.serializers.JSONSerializer'' REST_FRAMEWORK = { ''DEFAULT_RENDERER_CLASSES'': ( ''rest_framework.renderers.JSONRenderer'', ), ''DEFAULT_PARSER_CLASSES'': ( ''rest_framework.parsers.JSONParser'', ), ''DEFAULT_AUTHENTICATION_CLASSES'': ( ''rest_framework.authentication.OAuthAuthentication'', ), }

Y estoy usando esto como un cliente de "prueba":

import urlparse import oauth2 as oauth import requests consumer_key = "clave" consumer_secret = "secreto" consumer = oauth.Consumer(consumer_key, consumer_secret) client = oauth.Client(consumer) resource_url = ''http://blablabla.pythonanywhere.com/prueba'' consumer = oauth.Consumer(key=''clave'', secret=''secreto'') token = oauth.Token(key=''e7456187a43141af8d2e0d8fa99b95b9'', secret=''3wRIKoacff16tcew'') oauth_request = oauth.Request.from_consumer_and_token( consumer, token, http_method=''POST'', http_url=resource_url, parameters={''hola'':''pepe''} ) oauth_request.sign_request( oauth.SignatureMethod_HMAC_SHA1(), consumer, token ) url = oauth_request.to_url() response = requests.post(url, oauth_request.to_postdata()) print response.content

No entiendo qué dice la documentación de REST Framework sobre 405 Método no permitido

"Se genera cuando se produce una solicitud entrante que no se asigna a un método de control en la vista".

Gracias