Django 1.2: problema de login (parâmetro GET: próximo)

Eu tenho uma nova pergunta sobre django (eu publico uma perda deles hoje em dia ^^).

Aqui está minha situação: Eu tenho uma visualização de login personalizada (registrada como URL de login nas configurações) em que autentico os usuários. Eu escolhi fazer uma exibição personalizada para poder adicionar mensagens e log.

A autenticação funciona bem, mas tenho um problema com o parâmetro GET 'next'. É definido automaticamente pelas visualizações que redirecionam os usuários para autenticação. Na minha opinião, é usado para redirecionar o usuário após um login bem-sucedido.

Aqui está o código:

from django.http import HttpResponse
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.utils.translation import ugettext as _
from django.contrib import messages
from django.template import RequestContext
from django.contrib.auth import authenticate, login, logout

import logging
logger = logging.getLogger("views")

def login_user(request):
    """
    Displays the login form or authenticates the user if called by POST.
    """
    accepted = False

    next = request.GET.get('next', None)

    if not request.user.is_authenticated():
        if request.POST:
            # Get the form data and check the user credentials
            username = request.POST['username']
            password = request.POST['password']
            user = authenticate(username=username, password=password)

            if user is not None:
                if user.is_active:
                    # Log the user in
                    login(request, user)
                    logger.info("Login of user : %s", user.username)

                    # Confirm the login
                    messages.success(request,_('Login successful. Welcome !'))
                    accepted = True
                else:
                    messages.error(request,_('This account has been disabled by the administrator.'))
            else:
                messages.warning(request,_('The given username or password is invalid. Please try again.'))
    else:
        # If already authenticated
        accepted = True

    # Choose where to go
    if accepted:
        return HttpResponse(next)
        if next:
            return HttpResponseRedirect(next)
        else:
            return HttpResponseRedirect(reverse('myview'))
    else:
        return render_to_response('login.html',
                                    context_instance=RequestContext(request))

O próximo parâmetro está correto quando o usuário está acessando a visualização de login quando já está autenticado (o primeiro).

Quando um usuário anônimo tenta ir para / editor / 25 (por exemplo) e é redirecionado para fazer login para autenticação, "next" é sempre None, mesmo que esteja presente na URL (deve ser "/ editor / 25").

Deve haver um erro simples em algum lugar. Talvez tenha a ver com authenticate () ou login () (django.contrib.auth).

Obrigado pela ajuda.

questionAnswers(2)

yourAnswerToTheQuestion