2015-10-09 2 views
1

У меня есть пользовательская модель пользователя (MyUser) и регистрирующая форма (UserCreationForm) для этой модели. После регистрации пользователя я хочу, чтобы он перенаправлялся на домашнюю страницу. Однако он перенаправляется на главную страницу, но проблема заключается в том, что user не регистрируется даже после того, как функция login() используется в представлении регистра, и поэтому она перенаправляется обратно на страницу входа.Переадресовать на дом как зарегистрированный пользователь после успешной регистрации

views.py:

@login_required(login_url='/account/login/') 
def home(request): 
    return render(request, 'home.html') 

def login_view(request): 
    form = LoginForm(request.POST or None) 
    if request.POST and form.is_valid(): 
     user = form.login(request) 
     if user: 
      login(request, user) 
      return redirect("/")# Redirect to a success page. 
    return render(request, 'login.html', {'form': form }) 

def register(request): 
    if request.method == "POST": 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      user = form.save() 
      login(request, user) 
      return redirect("/") 
    else: 
     form = UserCreationForm() 
    return render(request, 'register.html', { 
     'form': form 
    }) 

Его дает мне ошибку:

AttributeError at /account/register/ 
'MyUser' object has no attribute 'backend' 

Что я здесь делаю неправильно? Пожалуйста, помогите мне, как это решить. Спасибо.

ответ

2

Возможно, это может решить вашу проблему.
Это подтвердит подлинность и войдет в систему после регистрации.

def register(request): 
    if request.method == "POST": 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      user = form.save() 
      password = self.request.POST.get('password', None) 
      authenticated = authenticate(
       username=user.username, 
       password=password 
      ) 
      if authenticated: 
       login(request, authenticated) 
       return redirect("/") 
    else: 
     form = UserCreationForm() 
    return render(request, 'register.html', { 
     'form': form 
    }) 
+0

Отлично! Спасибо. Не могли бы вы помочь мне понять, почему мне пришлось снова войти в систему с аутентифицированным, а не только «login (request, user)»? –

+0

Посмотрите это, возможно, это уточнит ваши вопросы, https://docs.djangoproject.com/en/1.8/topics/auth/default/#authenticating-users –

+0

Отлично! Огромное спасибо. –

Смежные вопросы