N'appelez pas .hex
sur l'objet UUID, sauf si vous avez besoin de la représentation en chaîne de cet uuid.
>>> import uuid
>>> some_uuid = uuid.uuid4()
>>> type(some_uuid)
<class 'uuid.UUID'>
>>> some_uuid_str = some_uuid.hex
>>> some_uuid_str
'5b77bdbade7b4fcb838f8111b68e18ae'
>>> type(some_uuid_str)
<class 'str'>
Ensuite, comme d'autres l'ont mentionné ci-dessus, pour reconvertir une chaîne d'UUID en instance d'UUID :
>>> uuid.UUID(some_uuid_str)
UUID('5b77bdba-de7b-4fcb-838f-8111b68e18ae')
>>> (some_uuid == uuid.UUID(some_uuid_str))
True
>>> (some_uuid == some_uuid_str)
False
Vous pourriez même mettre en place une petite fonction utilitaire d'aide pour valider l'adresse de l'utilisateur. str
et renvoyer l'UUID si vous le souhaitez :
def is_valid_uuid(val):
try:
return uuid.UUID(str(val))
except ValueError:
return None
Puis de l'utiliser :
>>> some_uuid = uuid.uuid4()
>>> is_valid_uuid(some_uuid)
UUID('aa6635e1-e394-463b-b43d-69eb4c3a8570')
>>> type(is_valid_uuid(some_uuid))
<class 'uuid.UUID'>