En primer lugar, obtuve este estado de uso que toma datos de la entrada:
const Checkout = ({cart, totalPrice, code}) => { const [values, setValues] = useState({ email: '', city:'', adress:'', postalCode:'', phone:'', firstName:'', lastName:'', message:'', price: totalPrice, code: code, shipmentFee:0, shipmentMethod:'', lockerId:'', cart:cart, }); Luego lo envío con la función generateOrder(values) :
export const generateOrder = (order) => { return fetch(`${url}/orders/generate-bank-transfer-order/`,{ method:"POST", body:order }) .then((response) => { return response.json(); }) .catch((error) => console.log(error)) }; Apunta a esta url en urls.py: path('generate-bank-transfer-order/',generate_bank_transfer_order, name="generate-bank-transfer")
Y esta es una vista que uso, por ahora solo quiero que devuelva los datos enviados para poder probar si funciona:
@csrf_exempt def generate_bank_transfer_order(request): if request.method == "POST": body = request.body return JsonResponse({"test":body}) Todo lo que obtengo es 401 Unauthorized y no tengo idea de cómo solucionarlo. ¿Algunas ideas?
Si está utilizando la clase de autenticación predeterminada en configuraciones como:
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ] }Primera importación
from rest_framework.permissions import AllowAnyluego modifica tu función para
@api_view(['POST']) @permission_classes([AllowAny]) def generate_bank_transfer_order(request): if request.method == "POST": body = request.body return JsonResponse({"test":body})La clase de permiso AllowAny permitirá el acceso sin restricciones, independientemente de si la solicitud fue autenticada o no.
Este permiso no es estrictamente necesario, ya que puede lograr el mismo resultado utilizando una lista vacía o una tupla para la configuración de permisos, pero puede resultarle útil especificar esta clase porque hace que la intención sea explícita.