1

ユーザーがフロント ページを離れることのないログイン システムを実装しようとしています。これまでのところ、次のものがあります。

フォーム:

<form action="" method="post">
    {% csrf_token %}
    <input type="text" name="username" value="" id="username">
    <input type="password" name="password" value="" id="password">
    <input type="submit" value="login" />
    <input type="hidden" name="next" value="{{ next|escape }}" />
</form>

景色:

def login_user(request):
    state = "Please log in below..."
    username = password = ''
    if request.POST:
        username = request.POST.get('username')
        password = request.POST.get('password')

        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                state = "You're successfully logged in!"
            else:
                state = "Your account is not active, please contact the site admin."
        else:
            state = "Your username and/or password were incorrect."

    return render_to_response('index.html',{'state':state, 'username': username})

既知のユーザーでフォームを送信すると、次のエラーが表示されます。

CSRF トークンが見つからないか、正しくありません。

私は何を間違っていますか?フォームにトークンがあります。

4

1 に答える 1

1

投稿したコード例では、context_instance なしで render_to_response を使用しています。

すべてのビューで、render_to_response の代わりに django.contrib.shortcuts.render を使用します。それ以外の場合、{% csrf_token %} は空になります。

于 2012-10-26T15:47:37.760 に答える