Django: создание чистого имени пользователя с именем first_name.last_name - PullRequest
1 голос
/ 12 декабря 2010

вместо необычного username, для моего сайта было бы лучше иметь нормализованное имя пользователя в форме first_name.last_name .

Создать нового пользователя просто.с таким именем пользователя

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

, но как лучше всего очистить оба поля, чтобы они содержали:

  1. без пробелов, например: Теодор де Банвиль
  2. без акцентов, например: Рафаэль Леблон
  3. любые другие проблемные символы

Я думал об использовании re и unidecode:

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

1 Ответ

1 голос
/ 12 декабря 2010

Это в основном то, что делает slugify(), но использование unidecode() является огромным улучшением.Единственное изменение, которое я хотел бы сделать, - это сначала применить unidecode(), а затем удалить пробелы.

...