Как я могу программно аутентифицировать пользователя в Django? - PullRequest
28 голосов
/ 25 октября 2011

Как я могу программно войти в систему пользователя в Django?У меня есть имя пользователя и пароль пользователя.Есть ли метод, который позволяет мне войти в него?

Ответы [ 2 ]

43 голосов
/ 25 октября 2011

Нет другого способа, кроме «программно».Конечно, это задокументировано .

from django.contrib.auth import authenticate, login
user = authenticate(username = username, password = password)
if user is not None:
    login(request, user)
6 голосов
/ 24 мая 2015

Всегда будьте осторожны при программном входе пользователей в систему, вы можете получить ошибку ´ user has no attribute "backend".Вы также должны установить бэкэнд, если этого не произошло ранее. Проект, который использует этот и некоторый пример кода:

def splash_register(request):
  if request.session.get('beta'):

    if request.method=='POST':
        userform=MyUserCreationForm(request.POST)
        if userform.is_valid():
            #username of <30 char is required by Django User model.  I'm storing username as a hash of user email 

            user=userform.save(commit=False)
            user.username=hash(user.email)
            user.backend='django.contrib.auth.backends.ModelBackend'
            user.save()


            username=user.username
            password=str(userform.cleaned_data['password'])
            auth.login(request, user)
            request.session['first_visit']=True
            return HttpResponseRedirect("/")
        else:
            userform=MyUserCreationForm(request.POST)
            return render_to_response("website/splash_register.html", {'userform':userform}, context_instance=RequestContext(request))
    return render_to_response("website/splash_register.html", context_instance=RequestContext(request))     
else:
    return HttpResponseRedirect('/splash/')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...