【问题标题】:Django: making a clean username with first_name.last_nameDjango:使用 first_name.last_name 创建一个干净的用户名
【发布时间】:2011-05-24 05:39:22
【问题描述】:

我的网站最好使用 first_name.last_name 形式的规范化用户名,而不是花哨的 username

用这种用户名创建新用户很简单

username = cleaned_data.get('first_name') + "." + cleaned_data.get('name')

但是清理这两个字段以使其包含的最佳方法是:

  1. 没有空格,例如:Théodore de Banville
  2. 没有重音例如:Raphaël LeBlond
  3. 任何其他有问题的字符

我想过用reunidecode

username = re.sub(r"\s+", "", username).lowercase
username = unidecode(username)

但这够了吗?

编辑:这是我目前的解决方案:

            fname = unicode(self.cleaned_data['first_name'])
            fname = unidecode(fname)
            fname = slugify(fname)
            name = unicode(self.cleaned_data['last_name'])
            name = unidecode(name)
            name = slugify(name)
            username = fname + "." + name

【问题讨论】:

  • 别忘了,当第二个 John Smith 注册时,您必须在某个时候使它们独一无二。

标签: django django-forms django-authentication


【解决方案1】:

这主要是 slugify() 所做的,但使用 unidecode() 是一个巨大的改进。我要做的唯一更改是先应用unidecode(),然后删除空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多