小编zah*_*ory的帖子

足够安全的8个字符的短唯一随机字符串

我试图计算8个字符的短唯一随机文件名,比方说,数千个文件没有可能的名称冲突.这种方法足够安全吗?

base64.urlsafe_b64encode(hashlib.md5(os.urandom(128)).digest())[:8]
Run Code Online (Sandbox Code Playgroud)

编辑

为了更清楚,我试图实现最简单的模糊文件名上传到存储.

我发现,8个字符的字符串,足够随机,是非常有效和简单的方法来存储成千上万的文件,没有可能的冲突,当正确实施时.我不需要保证唯一性,只需要足够高的名称冲突不可能性(仅涉及数千个名称).

文件存储在并发环境中,因此增加共享计数器是可以实现的,但是很复杂.在数据库中存储计数器效率低下.

我也面临这样的事实:random()在某些情况下会在不同的进程中返回相同的伪随机序列.

python random hash cryptography

30
推荐指数
5
解决办法
3万
查看次数

PyCharm不解析Django项目中的模板,模板标签和静态

PyCharm在我的Django项目中找不到模板,模板标签和静态文件,即使项目本身设置正确且有效.

我正在使用Django 1.6.2这个布局:

proj
  .devtmp
  manage.py
  proj
    settings.py
    app1
      templatetags
  app2
    templates
    static
Run Code Online (Sandbox Code Playgroud)

并使用以下设置:

from os.path import join, dirname, pardir, abspath

PROJECT_ROOT = abspath(join(dirname(__file__), pardir))
DEV_TMP_DIR = join(PROJECT_ROOT, pardir, '.devtmp')

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

TEMPLATE_DIRS = (
    join(PROJECT_ROOT, 'templates'),
)

MEDIA_ROOT = join(DEV_TMP_DIR, 'media')
MEDIA_URL = '/media/'

STATIC_ROOT = join(DEV_TMP_DIR, 'static')
STATIC_URL = '/static/'

INSTALLED_APPS = (
    ...
    'django.contrib.staticfiles',
    ...
    'proj'
    'proj.app1'
    'app2'
)
Run Code Online (Sandbox Code Playgroud)

更新:

在IDE首选项中,我已配置项目根目录的路径,settings.py和manage.py.另外,我已经配置了项目解释器(我现在正在从IDE运行runserver而没有任何问题).

django pycharm

12
推荐指数
4
解决办法
7577
查看次数

标签 统计

cryptography ×1

django ×1

hash ×1

pycharm ×1

python ×1

random ×1