[PYTHON] Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2

Registrierung zusätzlicher Informationen

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.

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

Fügen wir hier die Eingabeelemente für den Hundenamen und die Einführung hinzu.

Anmeldeformular überschreiben

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

DefaultAccountAdapter überschreiben

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

ACCOUNT_FORMS, ACCOUNT_ADAPTER Einstellungen

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.

Test anzeigen

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.

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

Nachdem Sie alle Elemente eingegeben haben, speichern Sie sie und rufen Sie den Verwaltungsbildschirm auf, um zu bestätigen, dass sie korrekt eingegeben wurden

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

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

Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell
Was ist ein Hund? Django - Erstellen Sie ein benutzerdefiniertes Benutzermodell 2
Was ist ein Superuser?
Benutzer wird nach dem Erstellen eines benutzerdefinierten Benutzermodells nicht erfolgreich hinzugefügt
Was ist ein Hund? Django-Installationsvolumen
Was ist ein Hund? Python-Installationsvolumen
Implementieren Sie ein benutzerdefiniertes Benutzermodell in Django
Was ist eine Distribution?
Was ist ein Hund? Fordern Sie die Django-Vorlage heraus! Volumen
Was ist ein Terminal?
Was ist ein Hacker?
Was ist ein Zeiger?
Was ist ein Hund? POST-Übertragungsvolumen mit Django--forms.py
Was ist ein Hund? Startvolumen der Django-App erstellen --startapp
Was ist ein Hund? Django App Creation Start Volume - Startprojekt
Was ist ein Entscheidungsbaum?
Was ist ein Kontextwechsel?
[Definition] Was ist ein Framework?
Was ist eine Rückruffunktion?
[Python] Was ist eine Zip-Funktion?
[Python] Was ist eine with-Anweisung?
Was ist ein lexikalischer / dynamischer Bereich?
Was ist das Convolutional Neural Network?
[Mein Memo] Djangos benutzerdefiniertes Benutzermodell
Was ist ein Hund? Volumen der GET-Anforderungen und Abfrageparameter
Was ist ein Hund? Django - Umfang, in dem Name und Datum von der URL abgerufen werden
Es ist ein Mac. Was ist der Linux-Befehl Linux?
Sag mir, was eine gleichwinklige Abbildung ist, Python!
Was ist ein Namespace?
Was ist copy.copy ()
Was ist Django? .. ..
Was ist dotenv?
Was ist POSIX?
Was ist ein Hund? Django - Umfang der Verwendung von Werten, die von der URL in der klassenbasierten Ansicht erhalten wurden
Was ist klass?
Was ist SALOME?
Was ist Linux?
Was ist Python?
Was ist Hyperopt?
Was ist Linux?
Was ist Pyvenv?
Was ist __call__?
Was ist Linux?
Was ist Python?
Was ist ein empfohlener Motor? Zusammenfassung der Typen
Was ist Gott? Erstelle einen einfachen Chatbot mit Python
Für mich als Django-Anfänger (2) - Was ist MTV?
Was ist ein Hund? Django - Versuchen Sie zum ersten Mal, Form zu verwenden. POST-Übertragungsvolumen