2017-04-03 1 views
0

Ich weiß, es ist grundlegend zu Login-Benutzerauthentifizierung erstellen. Und ich bin ein Neuling hier mit Django.Ich kann nicht anmelden in Django 1.10.1 Version

Ich habe ein Problem bei der Schaffung von Benutzerauthentifizierung:

Views.py

def Logins(request): 
if request.method == 'POST': 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None and user.is_active: 
     login(request, user) 
     return HttpResponseRedirect('music/login') 
    return HttpResponseRedirect('music/login') 
form = Userlogin 
return render(request, 'music/login.html', {'Login_form': Userlogin}) 

urls.py url (r '^ login/$', views.Logins, name = 'login'),

Es zeigt It shows MultiValueDictKeyError at /music/login/. " 'username'" anfordern Methode: POST Anforderungs-URL: http://127.0.0.1:8000/music/login/ Django Version: 1.10.4 Ausnahmetyp: MultiValueDictKeyError Ausnahmewert:
" 'username'"

login.html

{% block body %} 
{% if form.errors %} 
<p>Something is wrong</p> 
{% endif %} 

<form action="" method="post"> 
    {% csrf_token %} 
    <label for="email">Login:</label> 
    <label for="password">Password:</label> 
    <input type="password" name="password" value="" id="username"> 

    <input type="submit" value="login" /> 

</form> 
{% endblock %} 

Vielen Dank im Voraus.

Antwort

2

Die MultiValueDictKeyError scheint zu sein, weil request.POST['username'] existiert nicht.

Fügen Sie ein Benutzername-Feld in Ihrem Login-Formular hinzu.

<form action="" method="post"> 
    {% csrf_token %} 
    <label for="username">Username:</label> 
    <input type="text" name="username"> 
    <label for="email">Login:</label> 
    <label for="password">Password:</label> 
    <input type="password" name="password" value="" id="username"> 
    <input type="submit" value="login" /> 

</form> 
+0

danke bro. aber danach produziert es jetzt = 'method' object ist nicht subscriptable = error. :(Was soll ich tun? –

+0

Haben Sie eine Lösung gefunden? –

1

request.POST ist ein Wörterbuch. Sie sollten es auf diese Weise tun:

username = request.POST.get('username', None) 
password = request.POST.get('password', None) 
Verwandte Themen