5

ユーザーを正常に登録できているという問題がありますが、登録時にユーザーをログインさせたいと考えています。これが私の登録ビューを表すコードです。ユーザーが自動ログインしない理由について何か考えはありますか?

ノート:

  • ユーザーは正しく登録されています。この後ログインできます
  • authenticate(**kwargs) は正しいユーザーを返しています
  • settings.py には次のものがあります。

    AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',) 
    

ありがとう!

def register(request):
    user_creation_form = UserCreationForm(request.POST or None)
    if request.method == 'POST' and user_creation_form.is_valid():
        u_name = user_creation_form.cleaned_data.get('username')
        u_pass = user_creation_form.cleaned_data.get('password2')
        user_creation_form.save()
        print u_name # Prints correct username
        print u_pass # Prints correct password
        user = authenticate(username=u_name,
                            password=u_pass)
        print 'User: ', user # Prints correct user
        login(request, user) # Seems to do nothing
        return HttpResponseRedirect('/book/') # User is not logged in on this page
    c = RequestContext(request, {'form': user_creation_form})
    return render_to_response('register.html', c)
4

3 に答える 3

3

ああ!私はそれを考え出した。誰かがこの問題を抱えている場合、手動で呼び出す場合はdjango.contrib.authからログインをインポートします-私はビューをインポートしていました。コメントアウトされたコードは、私の状況にとって悪いインポートを表しています。

# from django.contrib.auth.views import login
from django.contrib.auth import authenticate, logout, login
于 2013-03-04T00:46:06.177 に答える
3

私はこのようにします:

u.backend = "django.contrib.auth.backends.ModelBackend"
login(request, u)
于 2013-03-04T00:48:36.380 に答える