Wie verlängere ich den Django "login" - Formular?
So, jetzt mache ich die basic-login. In urls.py ich gehe zu django contrib login:
(r'^login/?$','django.contrib.auth.views.login',{'template_name':'login.html'}),
Schießt es hier:
@csrf_protect
@never_cache
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm):
Diese Sicht verwendet die AuthenticationForm Formen Modell:
class AuthenticationForm(forms.Form):
"""
Base class for authenticating users. Extend this to get a form that accepts
username/password logins.
"""
username = forms.CharField(label=_("Username"), max_length=30)
password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
So...mein Ziel ist es, die Benutzername form! Durch das hinzufügen dieser zu ihm: widget = forms.TextInput(attrs={'placeholder': 'username'})
. Das ist es. Das ist alles was ich hinzufügen wollen, den Benutzernamen Eingabefeld. Aber ich will nicht zu ändern, die tatsächliche django forms.py Datei, da das Teil von django contrib und ich fühle mich schlecht ändern, die Datei.
Was kann ich tun? Soll ich ein Formular erstellen, erstreckt sich AuthenticationForm? Wenn ja, wie kann ich importieren? Und wie gebe ich das als ein argument über meine urls.py? Ich weiß nicht, was zu tun ist.
InformationsquelleAutor TIMEX | 2011-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Unterklasse der
AuthenticationForm
Klasse, und dann Sie brauchen, um Ihreurls.py
,Dann importieren Sie diese Klasse in Ihre
urls.py
- Datei und aktualisieren Sie den Anruf,Ich bin zu müde zum nachschlagen der links auf der Dokumentations-Website zu sehen, welche Art von Feld, das Sie verwenden müssen, aber dies sollte den trick tun, um Ihnen den Einstieg ohne das ändern der django
forms.py
denen Sie definitiv sollte fühlen sich schlecht über das ändern!InformationsquelleAutor milkypostman
Als milkypostman sagte, müssen Sie eine Unterklasse von auth.Formen.AuthenticationForm.
Dann, Sie können django-crispy-forms für die Platzhalter in den Feldern, die Sie wollen. Es ist so einfach:
(app/forms.py)
Schließlich, vergessen Sie nicht, verwenden Sie die knusprig-tag in Ihrer Vorlage:
InformationsquelleAutor rvliscano
Hier ist eine andere Lösung mit
path
statt des veraltetenurl
zum erstellen einer benutzerdefinierten version der Seite und das Formular, um Ihr Passwort zurückzusetzen, nachdem Sie einen link gesendet in einer E-Mail. Ich bin mit Django 2 und Python 3.In mein api-app-Ordner, die ich angelegt habe, einen Ordner Vorlagen/Rechnung mit drei Dateien im inneren.
base.html:
password_reset_complete.html:
password_reset_confirm.html:
In mein api-app-Ordner habe ich eine Datei erstellt forms.py für meine eigene form, die erweitert die Standard-SetPasswordForm form.
forms.py:
Und schließlich urls.py:
Hinweis 'aus .Formulare importieren SetPasswordFormCustom'. Die . kann eine Datei in den gleichen Ordner importiert werden.
Mein Grund für all dies tun ist, dass ich nicht habe zurücksetzen-Passwort zu arbeiten, in meiner Heimat Reagieren frontend, also bin ich mit zu nutzen die Django-templates für diese Funktion. Ich möchte in der Lage sein, um umzugestalten und links passen, dass mit meiner app so nahe wie möglich. Aber diese Methode sollte im Allgemeinen können Sie erstellen Sie Ihre eigenen benutzerdefinierten version von Django auth form.
InformationsquelleAutor Little Brain