2015-08-05 3 views
1

Я хочу войти в систему как пользователь моего аккаунта после регистрации, но когда вызывается login(request, user), тогда request.user по-прежнему является AnonymousUser.django.contrib.auth.views.login возвращает Анонимный пользователь

def register(request): 
    if request.method=='POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      username = form.cleaned_data['username'] 
      pwd = form.cleaned_data['password1'] 
      user = authenticate(username=username, password=pwd) 
      if user is not None and user.is_active: 
       auth_views.login(request, user) 
      return redirect('/') 
    else: 
     form = RegistrationForm() 

    return render(request, 'registration.html', {'form' : form}) 

При вызове login в моем собственном методе входа, он работает правильно. Но в

`register` view not: 
def login(request): 
    if request.method=="POST": 
     form = AuthenticationForm(data=request.POST) 
     if form.is_valid(): 
      username = form.cleaned_data['username'] 
      password = form.cleaned_data['password'] 
      user = authenticate(username=username, password=password) 
      if user is not None and user.is_active: 
       auth_views.login(request, user) 
       return redirect(reverse('chat')) 
      else: 
       return redirect('/') 
    else: 
     form = AuthenticationForm() 

    return render(request, 'login.html', {'form':form}) 

ответ

2

Try:

from django.contrib.auth import authenticate, login 

def my_view(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      # Redirect to a success page. 
     else: 
      # Return a 'disabled account' error message 
      ... 
    else: 
     # Return an 'invalid login' error message. 
     ... 

и проверьте настройки сеанса

0

ли вы помните, чтобы определить пользователь Auth в настройках файла? Если нет, вы должны добавить следующую строку в свои настройки.py:

AUTH_USER_MODEL = 'your_app.your_usermodel'