2016-06-02 7 views
0

私はログインフォームを持っています。ログインボタンを押すと、投稿データがビューlogin_authに送信され、ユーザーデータを認証し、それに応じてリダイレクトされます。しかし、ログインボタンを押した後、私は適切なページにリダイレクトされていません。フォームデータをアクションURLに投稿できません

views.py

def login_successful(request): 
    return render(request,"login_successful.html") 

def login_invalid(request): 
    return render(request,"login_invalid.html") 


def login(request): 
    return render(request,'login.html',c) 

def loginauth(request): 
    username=request.POST.get("username",'') 
    password=request.POST.get("password",'') 
    user=auth.authenticate(username=username,password=password) 
    if user is not none: 
     user.login(request.user) 
     return redirect(login_successful) 
    else: 
     return redirect(login_invalid) 

urls.py

urlpatterns = [ 
url(r'^registration/',views.registration), 
url(r'^registration_successful/',views.registration_successful), 
url(r'^home/',views.home), 
url(r'^login/',views.login), 

url(r'^login_successful/',views.login_successful), 
url(r'^login_invalid/',views.login_invalid), 
url(r'^login/auth',views.loginauth) 
] 

login.htmlと

<html> 
<form action="/login/auth" method="POST">{% csrf_token %} 

Username :<input type="textbox" name="username" > 
Password :<input type="password" name="password"> 
<input type="submit" value="Login"> 

</form> 
</html> 

答えて

0

あなたのログインURLパターンは、末尾の$が不足しています。それは次のようになります。

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

ドルがなければ、/login/authr'^login/で一致しているので、要求はログインビューによって処理されます。

異なるURLでフォームを処理するのは少し珍しいことです。 Djangoには、ログインビューを含むauthentication viewsが付属しています。私はあなた自身を書くよりむしろこれを使用することをお勧めします。

+0

おかげで、それが働いていたが、上で処理するのは珍しいです、なぜ私を教えてください可能性がありurls.py別のURL。セキュリティリスクはありますか? –

+0

ログインフォームを別のURLに投稿する際のセキュリティ上のリスクはありません。通常、[django forms](https://docs.djangoproject.com/ja/1.9/topics/forms/)を使用します。テンプレート内にフォームを表示し、ビュー内でフォームを使用してデータを処理するので、同じビューを使用するのが理にかなっています。 – Alasdair

0

使用URLの名前

views.py

def login_successful(request): 
    return render(request,"login_successful.html") 

def login_invalid(request): 
    return render(request,"login_invalid.html") 


def login(request): 
    return render(request,'login.html',c) 

def loginauth(request): 
    username=request.POST.get("username",'') 
    password=request.POST.get("password",'') 
    user=auth.authenticate(username=username,password=password) 
    if user is not none: 
     user.login(request.user) 
     return redirect('login_successful') 
    else: 
     return redirect('login_invalid') 

urlpatterns = [ 
url(r'^registration/',views.registration), 
url(r'^registration_successful/',views.registration_successful), 
url(r'^home/',views.home), 
url(r'^login/$',views.login), 

url(r'^login_successful/',views.login_successful, name='login_successful'), 
url(r'^login_invalid/',views.login_invalid, name='login_invalid'), 
url(r'^login/auth',views.loginauth) 
] 
関連する問題