вместо необычного username
, для моего сайта было бы лучше иметь нормализованное имя пользователя в форме first_name.last_name .
Создать нового пользователя просто.с таким именем пользователя
username = cleaned_data.get('first_name') + "." + cleaned_data.get('name')
, но как лучше всего очистить оба поля, чтобы они содержали:
- без пробелов, например: Теодор де Банвиль
- без акцентов, например: Рафаэль Леблон
- любые другие проблемные символы
Я думал об использовании 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