Dies wird eine einfache Frage für jemanden da draußen sein. Ich habe ziemlich viel gesucht und wenn es einen Thread gibt, der das perfekt anspricht, bitte leite mich und mach das aus. Ich erstelle ein sehr einfaches Webformular auf der Website unserer Organisation mit Django.Wie übergibt man einen Benutzernamen von einem Django-Login-Formular?
In forms.py Ich habe eine Klasse für die Login-Seite bekommen:
class userLogin(forms.Form):
user = forms.CharField(label = 'Username ', max_length = 25)
pwd = forms.CharField(label = 'Password ', widget = forms.PasswordInput)
def clean(self):
cleaned_data = super(userLogin, self).clean()
user = cleaned_data.get("user")
pwd = cleaned_data.get("pwd")
if not fs.authenticateUser(user, pwd):
raise forms.ValidationError("Invalid password!")
Ich habe unsere Website API zur Authentifizierung gegenüber, das ist es, was die fs.authenticate Bit ist über; Es gibt nur Wahr oder Falsch zurück. In views.py ich dies tun:
if request.method == 'POST':
user_form = userLogin(data = request.POST)
if user_form.is_valid():
return redirect('PickupAuthorization/main')
else:
pass
Die Authentifizierung und Umleitung auf die Haupt-Seite funktioniert hervorragend, und das Anmeldeformular wirft ein ungültiges Kennwort Nachricht wie erwartet, wenn die Anmeldeinformationen nicht korrekt ist. Was ich wissen möchte ist, wie man "user" für views.py verfügbar macht. Wenn ich versuche, in der Ansicht auf user_form.user zu verweisen, sagt Python, dass dieser Benutzer kein Attribut von userLogin ist!
Ich habe nicht viel mit OOP gemacht, also stelle ich mir vor, dass dies eine einfache Antwort hat, aber ich kann es nicht verdammt finden. Vielen Dank!
EDIT: Ich musste dieses Projekt im Moment zugunsten dringender Angelegenheiten zurückstellen, aber ich werde es aktualisieren, wenn ich eine Lösung habe, die richtig funktioniert.
Sie müssen das Rad nicht neu erfinden, werfen Sie einen Blick auf https://docs.djangoproject.com/de/1.10/topics/auth/customizing/ – Wtower
Ich schaute mir das an und ich verstehe es wo es über die Einstellung AUTHENTICATION_BACKENDS spricht. Aber dann diskutiert er das Schreiben meines eigenen Authentifizierungs-Backends, was ich tun muss, weil ich eine API eines Drittanbieters verwende. Es ist mir jedoch unklar, wie ein Benutzerobjekt zurückgegeben wird. Wenn ich die Dokumentation unter https://docs.djangoproject.com/en/1.10/topics/auth/default/#user-objects richtig lese, müsste ich etwas wie 'von django.contrib.auth machen. Modelle importieren User' und dann 'user = User.objects.create_user' - mit dem authentifizierten Benutzernamen, ja? –