1

我正在用 Python(和 Flask)创建一个 web 应用程序,用户可以在其中使用他们想要的用户名进行注册。我想在 /user/ 显示他们的个人资料,并在服务器上为每个用户提供一个目录。

确保用户名对于 url 和目录都安全的最佳方法是什么?我读到有人在 base64 中使用 urlsafe 方法,但我想要一个与他们的用户名相关的字符串以便于识别。

4

1 回答 1

1

这种 URL 安全值的通用术语是“slug”,生成一个的过程称为“slugification”或“slugify”。人们通常使用正则表达式来这样做;这是一个(来自关于该主题的这篇文章),仅使用 stdlib 模块:

import re
from unicodedata import normalize

_punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')

def slugify(text, delim=u'-'):
    """Generates an slightly worse ASCII-only slug."""
    result = []
    for word in _punct_re.split(text.lower()):
        word = normalize('NFKD', word).encode('ascii', 'ignore')
        if word:
            result.append(word)
    return unicode(delim.join(result))

链接的文章还有另外 2 个需要附加模块的替代方案。

于 2012-06-17T14:06:00.263 回答