au lieu d'un fantaisie username
, il serait préférable pour mon site web d'avoir un nom d'utilisateur normalisé sous la forme first_name.last_name.Django: faire un nom d'utilisateur propre avec first_name.last_name
Il est simple de créer le nouvel utilisateur avec ce genre de nom d'utilisateur
mais quelle est la meilleure façon de nettoyer les champs afin qu'ils contiennent:
- sans espaces ex: Théodore de Banville
- pas accents ex: Raphaël LeBlond
- tous les autres caractères problématiques
Je pensais d'utiliser re
et unidecode
:
username = re.sub(r"\s+", "", username).lowercase
username = unidecode(username)
mais c'est enought?
EDIT: voici ma solution actuelle:
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
N'oubliez pas que vous devrez les rendre uniques à un moment donné, lorsque le second John Smith s'inscrit. – Spacedman