0

現在、独自のカスタム Django ログイン ページを作成しています。これが私の見解です:

def login_poster(request):
     state = "Verified Posters, please login below..."
     username = password = ''
     if request.POST:
         username = request.POST.get('username')
         password = request.POST.get('password')

         user = authenticate(username=username, password=password)
         if user:
                  if user.is_active:
                 login(request, user)
                 state = "You're successfully logged in!"   
             else:
                 state = "You must have a verified Poster account to login."
         else:
             state = "Your username and/or password were incorrect."
     return render_to_response('poster_login.html',{'state':state, 'username': username})

これは私のテンプレートです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Log in</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style>
body{
    font-family:Arial,Helvetica,sans-serif;
    font-size: 12px;
}
</style>
</head>
<body>
{{ state }}
<form action="/login/" method="post">
    {% if next %}
    <input type="hidden" name="next" value="{{ next }}" />
    {% endif %}
    username:
    <input type="text" name="username" value="{{ username}}" /><br />
    password:
    <input type="password" name="password" value="" /><br />

    <input type="submit" value="Log In" />
</form>

なんらかの理由で、間違ったユーザー名とパスワード、または正しいユーザー名とパスワードを使用してログインし、かつフィールドを空にしてログインすると、ブラウザに次の応答が表示されます。

OK

何を入力してもOKと表示され続けます。資格情報が無効かどうかを確認することさえしていません。送信を押すと、フィールドの内容に関係なく、「OK」が返されます

このチュートリアルに従いました: http://solutoire.com/2009/02/26/django-series-1-a-custom-login-page/

どうすればこれを修正できますか?

4

1 に答える 1

1

OK ページが表示される理由がわかりません。ただし、「render_to_response」を「render」に置き換えてコードを使用しました。

render(request, 'poster_login.html',{'state':state, 'username': username})

テンプレートに「csrf_token」を使用すると、次のようになります。

{% csrf_token %} ...

これを行うと、セットアップで期待される結果が得られます。

于 2013-07-08T23:12:57.740 に答える