Hallo! Dies ist Ponta, ein Shiba-Hund. Ich hatte den Traum, von einer Wildnis in den Bergen verfolgt zu werden. Ich war sehr erschrocken.
Übrigens habe ich in dem zuletzt erstellten benutzerdefinierten Benutzermodell Dogname und Einführung hinzugefügt, aber wie unten gezeigt, gab es kein Eingabeelement auf dem Registrierungsbildschirm.
Fügen wir hier die Eingabeelemente für den Hundenamen und die Einführung hinzu.
Fügen Sie es dem Anmeldeformular hinzu, damit Sie den Hundenamen und die Einführung in das Eingabeformular eingeben können.
accounts/forms.py
rom allauth.account.forms import SignupForm
from django import forms
from .models import CustomUser
from django.utils.translation import gettext, gettext_lazy as _, pgettext
class CustomSignupForm(SignupForm):
dogname = forms.CharField(label=_("Dog Name"),
widget=forms.TextInput(
attrs={"placeholder": _('Dog Name')}
)
)
introduction = forms.CharField(label=_("Introduction"),
widget=forms.Textarea(
attrs={"placeholder": _('Introduction')}
))
class Meta:
model = CustomUser
def signup(self, user):
user.dogname = self.cleaned_data['dogname']
user.introduction = self.cleaned_data['introduction']
user.save()
return user
class UpdateProfileForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.user = kwargs.get('instance', None)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
class Meta:
model = CustomUser
fields = ('email', 'username', 'dogname', 'introduction')
Überschreibt die DefaultAccountAdapter-Methode save_user (), um Benutzerinformationen zu speichern. Der Punkt ist, das Argument save_user auf True zu setzen.
accounts/adapter.py
from allauth.account.adapter import DefaultAccountAdapter
class AccountAdapter(DefaultAccountAdapter):
def save_user(self, request, user, form, commit=True):
"""
This is called when saving user via allauth registration.
we override this to set additional data on user object.
"""
user = super(AccountAdapter, self).save_user(request, user, form, commit=False)
user.dogname = form.cleaned_data.get('dogname')
user.introduction = form.cleaned_data.get('introduction')
user.save()
Stellen Sie die Verwendung von CustomSignupForm und AccountAdapter ein.
shiba_app/settings.py
ACCOUNT_FORMS = {
'signup': 'accounts.forms.CustomSignupForm',
}
ACCOUNT_ADAPTER = 'accounts.adapter.AccountAdapter'
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False Also versuche ich das Passwort nur einmal einzugeben.
http://127.0.0.1:8000/accounts/signup/ Gehen Sie zu und stellen Sie sicher, dass Sie den Hundenamen und die Einführung eingeben können.
Nachdem Sie alle Elemente eingegeben haben, speichern Sie sie und rufen Sie den Verwaltungsbildschirm auf, um zu bestätigen, dass sie korrekt eingegeben wurden
Es ging gut! Wir sehen uns! Tschüss!
Referenzartikel 1: Erstellen einer Authentifizierungsfunktion mit django-allauth und CustomUser in Django Referenzartikel 2: Erstellen und Auffüllen von Benutzerinstanzen
Recommended Posts