Paquete Django para generar cadena alfanumérica aleatoria.

Estoy creando una aplicación que tiene un front-end separado (Angular o alguna otra biblioteca JS) y un backend (Django). Para garantizar la seguridad de las solicitudes que se envían al servidor, quiero adjuntar un parámetro url, por ejemplo, server/someurl?unique_id=Something-unique .

Estoy almacenando este código único en el almacenamiento localStorage la máquina durante un tiempo específico. Sin embargo, quiero configurar este código utilizando algún tipo de función en el extremo del servidor que no solo generará este texto alfanumérico aleatorio, sino que también lo validará en función de las solicitudes entrantes.

Por ejemplo:

Cuando un usuario abre la aplicación, enviará un server/setCode que responderá con esta cadena generada aleatoriamente que almacenaré en el Local Storage utilizando JS.

En una solicitud de salida, diga server/getdata?someparameter=some_data&unique_id=string_from_local_storage que el servidor puede validar contra la función de generación y solo luego procesa el rest de la URL.

¿Hay algún paquete o módulo que pueda ayudarme a lograr la generación y validación? Espero poder transmitir lo que quiero ya que no puedo encontrar ninguna solución para este corto de escribir la función para generarme y probarme.

Django proporciona la función get_random_string() que satisfará el requisito de generación de cadena alfanumérica. No necesita ningún paquete adicional porque está en el módulo django.utils.crypto .

 >>> from django.utils.crypto import get_random_string >>> unique_id = get_random_string(length=32) >>> unique_id u'rRXVe68NO7m3mHoBS488KdHaqQPD6Ofv' 

También puede variar el conjunto de caracteres con allowed_chars :

 >>> short_genome = get_random_string(length=32, allowed_chars='ACTG') >>> short_genome u'CCCAAAAGTACGTCCGGCATTTGTCCACCCCT' 

Hay muchas otras formas de generar una identificación única, aunque no necesariamente una alfanumérica:

  1. El módulo uuid – genera un UUID único usando uuid1 o uuid4 , por ejemplo

     >>> import uuid >>> my_uuid = uuid.uuid4() >>> my_uuid UUID('8e6eee95-eae1-4fb4-a436-27f68dbcb6d7') >>> str(my_uuid) '8e6eee95-eae1-4fb4-a436-27f68dbcb6d7' 
  2. El módulo aleatorio :

     >>> import random >>> import string >>> allowed_chars = ''.join((string.ascii_letters, string.digits)) >>> unique_id = ''.join(random.choice(allowed_chars) for _ in range(32)) >>> unique_id '121CyaSHHzX8cqbgLnIg1C5qNrnv21uo' 

O, si no eres quisquilloso con el alfabeto:

 >>> unique_id = '%32x' % random.getrandbits(16*8) >>> unique_id '5133d2d79ce518113474d8e9f3702638'