7

具体的には、認証とリダイレクトの後、request.user は匿名ユーザーになります。

ログイン(閲覧機能)

def login(request):
if request.method == 'POST':

    form = LoginForm(request.POST) 

    if form.is_valid():
        #django.contrib.auth.login
        Login(request, form.get_user())
        str = reverse('cm_base.views.index')
        return HttpResponseRedirect(str)
    else:
            # Their password / email combination must have been incorrect
        pass

else:
    form = LoginForm()

return render_to_response('cm_base/login.html', 
                          {"DEBUG": True,
                           'form' : form
                           },
                          context_instance=RequestContext(request))

index ビューで login_required デコレータを削除し、request.user オブジェクトをテストしました

def index(request):
test = request.user.is_authenticated()

return render_to_response('cm_base/index.html', 
                          {"DEBUG": True,
                           "user": request.user,},
                          context_instance=RequestContext(request))

テストは false を返します。

修理

インデックスビューを直接呼び出すだけになりました。HttpResponseRedirect を呼び出したときにユーザー オブジェクトが失われた理由については、まだ混乱しています。

def login(request):
if request.method == 'POST':
    form = LoginForm(request.POST) # Not shown in this example

    if form.is_valid():
        Login(request, form.get_user())
        str = reverse('cm_base.views.index')
        return index(request)
    else:
            # Their password / email combination must have been incorrect
        pass

else:
    form = LoginForm()
4

3 に答える 3

1

どの認証バックエンドを使用していますか? ModelBackend 以外の場合は、get_user メソッドが正しいことを確認してください。認証ミドルウェアが get_user メソッドで探しているものとは異なる識別子 (ユーザー名ではなく pk など) を送信しているように聞こえます。

于 2013-05-09T15:06:56.487 に答える