Django软件包以生成随机字母数字字符串 - 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。

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

参考方案

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的方法有很多,尽管不一定是字母数字的:

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

    Python pytz时区函数返回的时区为9分钟 - python

    由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

    Python:对于长时间运行的进程,通过还是休眠? - python

    我正在编写一个队列处理应用程序,该应用程序使用线程等待和响应要发送到该应用程序的队列消息。对于应用程序的主要部分,只需要保持活动状态即可。对于像这样的代码示例:而True: 通过要么而True: time.sleep(1)哪一个对系统的影响最小?除了保持python应用运行外,什么都不做的首选方式是什么? 参考方案 我可以想象time.sleep()会减少系…

    Python:无符号32位按位算术 - python

    试图回答另一篇有关其解决方案涉及IP地址和网络掩码的文章时,我陷入了普通的按位算法。在Python中,是否存在一种标准的方式来进行按位AND,OR,XOR,NOT运算,假设输入是“32位”(可能是负数)整数或long,并且结果必须是[[ 0,2 ** 32]?换句话说,我需要一个与无符号长整数之间的C按位运算有效的Python对应物。编辑:具体问题是这样的:…

    Python:如何从字节中提取特定位? - python

    我有一条消息,显示为14 09 00 79 3d 00 23 27。我可以通过调用message[4]从此消息中提取每个字节,例如,这将给我3d。如何从该字节中提取单个8位?例如,如何将24-27位作为单个消息?只需28位? 参考方案 要回答问题的第二部分,您可以使用按位运算来获取特定的位值# getting your message as int i = …

    Python:检查是否存在维基百科文章 - python

    我试图弄清楚如何检查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不会,页面只是说:“维基百科没有此名称的文章。”谢谢! 参考方案 >>> import urllib >>> prin…