1. ホーム
  2. django

django で登録後に自動的にユーザをログインさせる方法

2023-10-02 14:36:55

質問

現在、登録に使用しているものです。

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            messages.info(request, "Thanks for registering. Please login to continue.")
            return HttpResponseRedirect("/dashboard/")
    else:
        form = UserCreationForm()
    return render_to_response("accounts/register.html", {
        'form': form,
    }, context_instance=RequestContext(request))

アカウント作成後に手動でログインさせるのではなく、単純に自動でログインさせることは可能でしょうか?ありがとうございます。

edit: login()関数を試したのですが、成功しませんでした。AUTHENTICATION_BACKENDSが設定されていないことが問題だと思います。

どのように解決するのですか?

を使用して authenticate() login() 関数を使用します。

from django.contrib.auth import authenticate, login

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            messages.info(request, "Thanks for registering. You are now logged in.")
            new_user = authenticate(username=form.cleaned_data['username'],
                                    password=form.cleaned_data['password1'],
                                    )
            login(request, new_user)
            return HttpResponseRedirect("/dashboard/")