Ich verwende django-alluth zur Authentifizierung/Registrierung auf meiner Django-App. Und ich muss ein benutzerdefiniertes Anmeldeformular mit nur einem Feld erstellen: E-Mail. Das Passwort wird auf dem Server generiert. Hier ist eine Form ich geschaffen habe:Passwort bei Benutzerregistrierung senden, django-allauth
from django import forms
from users.models import User
class SignupForm(forms.ModelForm):
email = forms.CharField()
class Meta:
model = User
fields = ['email',]
esclude = ['password1', 'password']
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
del self.fields['password1']
del self.fields['password2']
def signup(self, request, user):
password = str(User.objects.make_random_password())
user.set_password(password) #!!!!!!! HERE
user.save()
In settings.py:
ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.SignupForm'
Und jetzt brauche ich eine E-Mail an den Benutzer mit seinem Passwort zu senden. Natürlich kann ich dies in signup
Methode tun, aber es ist keine gute Praxis, da ein Formular nur zum Sammeln und Überprüfen von Informationen benötigt wird.
Es wird gut sein, user_signed_up
django-allauth Signal zu hören, aber es wird unmöglich sein, Benutzerpasswort darin zu erhalten, wie ein Passwort in einem Hash gespeichert wird. Gibt es eine Möglichkeit, zusätzliche Parameter zum Signalisieren zu übergeben? Oder vielleicht gibt es andere Methoden, um eine E-Mail zu senden?
Vielen Dank.
Ja, danke. Ich löste es, indem ich die Datei "utils.py" erstellte und dort eine Funktion mit dem Senden einer E-Mail definierte. –