Qu'est-ce qu'un chien? Django - Créer un modèle utilisateur personnalisé 2

Enregistrement d'informations supplémentaires

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.

スクリーンショット 2020-08-30 20.46.29.png

Ajoutons ici les éléments d'entrée pour le nom du chien et l'introduction.

Remplacement du formulaire d'inscription

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')

Remplacer DefaultAccountAdapter

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()

ACCOUNT_FORMS, paramètres ACCOUNT_ADAPTER

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.

Test d'affichage

http://127.0.0.1:8000/accounts/signup/ Accédez à et assurez-vous que vous pouvez entrer le nom du chien et l'introduction.

スクリーンショット 2020-09-02 6.31.03.png

Après avoir saisi tous les éléments, enregistrez-le et accédez à l'écran de gestion pour confirmer qu'il est correctement saisi

スクリーンショット 2020-09-02 6.34.55.png

Ç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

Qu'est-ce qu'un chien? Django - Créer un modèle utilisateur personnalisé
Qu'est-ce qu'un chien? Django - Créer un modèle utilisateur personnalisé 2
Qu'est-ce qu'un super utilisateur?
L'utilisateur n'est pas ajouté avec succès après la création d'un modèle d'utilisateur personnalisé
Qu'est-ce qu'un chien? Volume d'installation de Django
Qu'est-ce qu'un chien? Volume d'installation Python
Implémenter un modèle utilisateur personnalisé dans Django
Qu'est-ce qu'une distribution?
Qu'est-ce qu'un chien? Défiez le modèle Django! Le volume
Qu'est-ce qu'un terminal?
Qu'est-ce qu'un hacker?
Qu'est-ce qu'un pointeur?
Qu'est-ce qu'un chien? Volume de transmission POST à l'aide de Django--forms.py
Qu'est-ce qu'un chien? Volume de démarrage de la création de l'application Django --startapp
Qu'est-ce qu'un chien? Volume de démarrage de la création de l'application Django - startproject
Qu'est-ce qu'un arbre de décision?
Qu'est-ce qu'un changement de contexte?
[Définition] Qu'est-ce qu'un cadre?
Qu'est-ce qu'une fonction de rappel?
[Python] Qu'est-ce qu'une fonction zip?
[Python] Qu'est-ce qu'une instruction with?
Qu'est-ce qu'une portée lexicale / une portée dynamique?
Qu'est-ce que le réseau neuronal convolutif?
[Ma note] Modèle utilisateur personnalisé de Django
Qu'est-ce qu'un chien? Volume de requêtes GET et paramètres de requête
Qu'est-ce qu'un chien? Django - Volume d'obtention du nom et de la date à partir de l'URL
C'est un Mac. Qu'est-ce que la commande Linux Linux?
Dites-moi ce qu'est une cartographie équiangulaire, Python!
Qu'est-ce que l'espace de noms
Qu'est-ce que copy.copy ()
Qu'est-ce que Django? .. ..
Qu'est-ce que dotenv?
Qu'est-ce que POSIX
Qu'est-ce qu'un chien? Django - Volume d'utilisation des valeurs obtenues à partir de l'URL dans une vue basée sur les classes
Qu'est-ce que le klass?
Qu'est-ce que SALOME?
Qu'est-ce que Linux?
Qu'est-ce que python
Qu'est-ce que l'hyperopt?
Qu'est-ce que Linux
Qu'est-ce que pyvenv
Qu'est-ce que __call__
Qu'est-ce que Linux
Qu'est-ce que Python
Qu'est-ce qu'un moteur de recommandation? Résumé des types
Qu'est-ce que Dieu? Créez un chatbot simple avec python
Pour moi en tant que débutant Django (2) - Qu'est-ce que MTV?
Qu'est-ce qu'un chien? Django - Essayez d'utiliser Form pour la première fois Volume de transmission POST