Quiero crear una API muy simple, con solo un punto final. Quiero enviar a una API un json como: {"proveedor": "com.facebook.orca", "código": "1", "color": "#FFFFF"}
Luego, quiero usar una biblioteca de python para controlar un dispositivo en mi habitación (python-yeelight). Quiero usar esto con un token de autenticación o una autenticación de nombre de usuario/contraseña.
Lo que encontré en Django Rest Framework fue demasiado complicado para lo que necesito (que es aceptar un POST y devolver un mensaje de "éxito" o "fallo".
¡Gracias!
Puede crear un decorador de métodos para implementar la autenticación básica. Envuelve todas tus vistas de django usando este decorador.
def token_required(function): def wrap(request, *args, **kwargs): auth_token = request.META.get('HTTP_AUTHORIZATION_TOKEN') if auth_token: try: token = Tokens.objects.get(token=auth_token) user = token.user except Tokens.DoesNotExist: user=None else: r = { 'status': -1, 'message': 'Please provide a valid token.' } return HttpResponse(json.dumps(r), content_type="application/json") if user: request.user = user return function(request, *args, **kwargs) else: r = { 'status': -2, 'message': 'User not Authorised, Please login' } return HttpResponse(json.dumps(r), content_type="application/json") return wrapAhora todas sus solicitudes deben contener un encabezado como se muestra a continuación para las vistas envueltas por este decorador para detectar las vistas internas del usuario.
AUTORIZACIÓN-TOKEN: some_token_value
Su modelo de fichas se verá como se muestra a continuación.
class Tokens(models.Model): user = models.OneToOneField(User, related_name="tokens",null=False) token = models.CharField(max_length=255, unique=True) def save(self, *args, **kwargs): if self.token is None or self.token == "": import uuid self.token=uuid.uuid4().hex super(Tokens, self).save(*args, **kwargs)Ejemplo de uso de decorador:
@csrf_exempt @token_required def your_view(request): passSupongo que esto debería ayudarte.