HTTP Request Object reagiert nicht

Ich mache ein Anmeldeformular in Django. Wenn ich klicke auf login submit button, gibt es einen Fehler von

ValueError at / registration / Die Ansicht registration.views.login hat kein HttpResponse-Objekt zurückgegeben.

Die Ansichtsdatei ist

from django.template import loader from django.shortcuts import render from registration.models import Registration from django.http import HttpResponse def login(request): if request.method == 'POST': user = authenticate(username=request.POST['username'], password=request.POST['password']) if user is not None: if user.is_active: login(request, user) # success return HttpResponseRedirect('sucess') else: # disabled account return direct_to_template(request, 'inactive_account.html') else: # invalid login return direct_to_template(request, 'invalid_login.html') def logout(request): logout(request) return direct_to_template(request, 'logged_out.html') 

Und login.html Datei ist

 <h3>Login</h3> <form action="/login/" method="post" accept-charset="utf-8"> <label for="username">Username:--</label><input type="text" name="username" value="" id="username" /><br> <label for="password">Password:-- </label><input type="password" name="password" value="" id="password" /> <p><input type="submit" value="Login →"></p> </form> 

3 Solutions collect form web for “HTTP Request Object reagiert nicht”

Ihre Login-Ansicht gibt eine HttpResponse nur für eine POST-Anfrage zurück (auf Formular abschicken). Wenn Sie Ihren Browser an die Anmeldeseite adressieren, macht es eine GET-Anfrage, die nicht in Ihrer Ansicht behandelt wird

Ich empfehle Ihnen, mehr über User athentication zu lesen: doc .

Und wie erwähnt, verwenden Sie render oder render_to_response Funktionen from django.shortcuts

Statt direct_to_template Sie render_to_response , die eine gegebene Vorlage ausgibt und HttpResponse zurückgibt.

Siehe render_to_response . Hinweis; Du musst es importieren from django.shortcuts import render_to_response

Warum render_to_response du nicht mit render_to_response ?

Die Antwort auf Ihre Frage ist, dass Sie das Httpresponse Objekt nicht zurückgeben

Wenn Ihr Login erfolgreich ist, dann werden Sie nur zum Erfolg weitergeleitet.

Versuche dies

  return render_to_response(your_template_name, context_instance=RequestContext(request)) 

Vergessen Sie nicht, context_instance wie zu importieren

 from django.template import RequestContext 
  • Django Reverse Lookup von Fremdschlüsseln
  • Wie kann ich datetime in Django vergleichen?
  • Union und schneiden in Django
  • Render_to_response oder redirect ändert die Template-Elemente in Django 1.8
  • Django pro Benutzer-View-Caching
  • Django: Hinzufügen von Inline-Formate-Zeilen ohne Javascript
  • Django-Code verhält sich anders auf lokalem und Server
  • Wie erstelle ich ein Formular aus einem Json-Schema?
  • Abfrage Viele auf viele Felder in django Vorlage
  • Erstellen eines Dropdown-Menüs von Mitglieds-IDs
  • Wie man Daten zwischen Django-Ansichten übergibt
  • Python ist die beste Programmiersprache der Welt.