0

ブラウザのアドレス バーの URL で Enter キーをクリックしてページをリロードするか、同じ URL を別のタブで開くと、セッションが期限切れになったように見えます。私のページがログインページに移動していることを意味します。

これが私の見解です。以下のビューは、index.html である 1 つの HTML ページでレンダリングされます。ユーザー ログインのユーザー名/パスワード ログイン フォームが他の方法で表示されるたびに、ログインしていただきありがとうございますと表示されます。したがって、この機能は正常に機能しています。

def index(request):
     if request.user.is_authenticated():
            return HttpResponseRedirect('/myapp/')

     if request.method == 'POST':
            form = UserLoginForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['username']
                password = form.cleaned_data['password']
            if request.user.is_authenticated():
                return HttpResponseRedirect('/myapp/')
            else:
                user = authenticate(username = username, password = password)
            return shortcuts.render_to_response('index.html',locals(),
                                    context_instance = context.RequestContext(request))
     else:
            form = UserLoginForm

return shortcuts.render_to_response('index.html',locals(),
                                    context_instance = context.RequestContext(request))

参考までに、アプリのミドルウェア クラスの下にインストールしました。

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',

誰かがこれについて私を助けてくれますか

-RAM

4

2 に答える 2

1

これは、「ログイン」メソッドではなく「認証」メソッドを使用しているためです。「認証」の代わりに「ログイン」を使用することで、あなたがしようとしていることは達成されます。「ログイン」を使用すると、ユーザーの ID が保存されます。セッション。これを参照してください https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.login

于 2012-09-16T10:31:03.393 に答える
1

login関数の呼び出しを追加します。この関数は、次のように、ユーザーの ID をセッションに保存する役割を果たします。

else:
    user = authenticate(username = username, password = password)
    if user is not None:
        login(request, user)
    else:
        ...
于 2012-09-16T10:31:20.663 に答える