生成随机字母数字字符串的Django包

2024-05-16 03:18:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在构建一个应用程序,它有一个独立的前端(Angular或其他JS库)和后端(Django)。为了确保发送到服务器的请求的安全性,我想附加一个url参数,比如server/someurl?unique_id=Something-unique

我将这个唯一的代码存储在机器的localStorage上一段特定的时间。但是,我想在服务器端使用某种函数来设置此代码,这样不仅可以生成随机的字母数字文本,而且可以根据传入的请求来验证它。

例如:

当用户打开应用程序时,它将发送一个server/setCode,该字符串将用这个随机生成的字符串响应,我将使用JS将其存储到Local Storage

对于传出请求,例如server/getdata?someparameter=some_data&unique_id=string_from_local_storage,服务器可以根据生成函数对其进行验证,然后才处理url的其余部分。

是否有一个包或模块可以帮助我实现生成和验证? 我希望我能传达我想要的东西,因为我无法找到任何解决方案来解决这个短写的函数来生成和测试我自己。


Tags: django函数字符串代码服务器id应用程序url
1条回答
网友
1楼 · 发布于 2024-05-16 03:18:29

Django提供的函数get_random_string()将满足字母数字字符串生成的要求。您不需要任何额外的包,因为它在django.utils.crypto模块中。

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

还可以使用allowed_chars更改字符集:

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

有许多其他方法可以生成唯一的id,但不一定是字母数字的:

  1. uuid模块-使用uuid1uuid4生成唯一的UUID,例如

    >>> import uuid
    >>> my_uuid = uuid.uuid4()
    >>> my_uuid
    UUID('8e6eee95-eae1-4fb4-a436-27f68dbcb6d7')
    >>> str(my_uuid)
    '8e6eee95-eae1-4fb4-a436-27f68dbcb6d7'
    
  2. random模块:

    >>> 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'
    

或者,如果你对字母表不挑剔:

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

相关问题 更多 >