2017-05-07 1 views
1

私は自分のカスタムログインページを作成して、私のdjangoのスキルをテストしようとしていましたが、うまくいかないでしょう。マイビュー:私のカスタムdjangoログインビューは動作しません

def login_view(request): 
if request.method == "POST": 
    form = LoginForm(request.POST) 
    if form.is_valid(): 
     email = form.cleaned_data.get('email') 
     password = form.cleaned_data.get('password') 
     user = authenticate(email=email, password=password) 
     if user: 
      login(request, user) 
      redirect('/account/') 
     else: 
      print(str(password)+" "+str(email)) 
else: 
    form = LoginForm() 
return render(request, 'users/login.html',{'form': form}) 

マイフォーム

class LoginForm(forms.Form): 
email = forms.CharField(
    widget=forms.TextInput(attrs={'class': 'registerforms', 'placeholder': 'Email'}), 
    label='', 
) 
password = forms.CharField(
    widget=forms.PasswordInput(attrs={'class': 'registerforms', 'placeholder': 'Password'}), 
    label='', 
) 

私のURL

url(r'^login/$', views.login_view, name='login_view'), 

マイテンプレート

<form action="" method="post" role="form"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Login</button> 
</form> 
+0

ある場合はスタックトレースを投稿できますか? ログインしようとするたびにフォームが有効かどうか確認してください。 – zaidfazil

答えて

1

問題はここにある: ユーザー=認証(メール=メール、パスワード=パスワード) デフォルトの認証バックエンドは、ユーザを認証するためにユーザ名(電子メールではありません)を使用します。電子メールを使用する場合は、カスタムバックエンドを作成する必要があります。ここでの指示に従って作成することができます(https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#authentication-backends

リダイレクトが正常に機能するには、リダイレクト( '/ account /')の前に「return」を付ける必要があります。関数の最後にreturn render(...)を実行します)。

関連する問題