salut! Voici Ponta, un chien Shiba. J'ai rêvé d'être chassé par un désert dans les montagnes. J'étais très effrayé.
À propos, dans le modèle utilisateur personnalisé créé la dernière fois, j'ai ajouté le nom de domaine et l'introduction, mais comme indiqué ci-dessous, il n'y avait aucun élément d'entrée sur l'écran d'enregistrement.
Ajoutons ici les éléments d'entrée pour le nom du chien et l'introduction.
Ajoutez-le au formulaire d'inscription afin de pouvoir entrer le nom du chien et l'introduction dans le formulaire de saisie.
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')
Remplace la méthode DefaultAccountAdapter save_user () pour stocker les informations utilisateur. Le but est de définir l'argument save_user commit sur True.
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()
Défini pour utiliser CustomSignupForm et AccountAdapter.
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 Donc, j'essaye de saisir le mot de passe une seule fois.
http://127.0.0.1:8000/accounts/signup/ Accédez à et assurez-vous que vous pouvez entrer le nom du chien et l'introduction.
Après avoir saisi tous les éléments, enregistrez-le et accédez à l'écran de gestion pour confirmer qu'il est correctement saisi
Ça s'est bien passé! À bientôt mon cher! Bye Bye!
Article de référence 1: Créer une fonction d'authentification à l'aide de django-allauth et CustomUser dans Django Article de référence 2: Création et remplissage d'instances utilisateur
Recommended Posts