/ / comment puis-je changer 'nom d'utilisateur-mot de passe' en 'nom d'utilisateur-mot de passe' sur django-registration [fermé]

comment puis-je changer 'nom d'utilisateur-mot de passe' en 'nom d'utilisateur-mot de passe' sur django-registration [fermé] - python, django

comment changer "nom d'utilisateur-mot de passe" en "nom d'utilisateur-mot de passe" dans django-registration

Réponses:

3 pour la réponse № 1

Vous ne pouvez pas facilement stocker des emails dans django.contrib.auth.model.User"nom d'utilisateur", vous aurez donc besoin d'un autre backend d'authentification. Mettez ce qui suit quelque part et ajoutez son chemin à AUTHENTICATION_BACKENDS. Voir http://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend

from django.contrib.auth.models import User

class EmailBackend(object):
""" Authenticates against the email field of django.contrib.auth.models.User
"""

def authenticate(self, email=None, password=None):
# Try using the email if it is given
if email:
for user in User.objects.filter(email=email):
if user.check_password(password):
return user

def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None

Puis, à votre avis, authentifiez-vous en appelant django.contrib.auth.authenticate.

Deux choses à noter:

  • Vous voudrez probablement conserver la valeur par défaut AUTHENTICATION_BACKEND là-bas, surtout si vous voulez utiliser l’administrateur Django.
  • Si les utilisateurs se connectent eux-mêmes sans nom d’utilisateur, vous devrez en créer un pour eux. J’utilise la version base64 d’un uuid pour cela.

Définissez le nom d'utilisateur dans une méthode de sauvegarde quelque part (par exemple, dans votre nouveau formulaire utilisateur):

import uuid, binascii
username = binascii.b2a_base64(uuid.uuid4().bytes)