Django rediriger vers la racine à partir d'une vue

Je suis entrain de créer un projet django. Cependant, j'ai rencontré un petit hoquet. Mon urls.py on dirait que cette

url(r'^login/(?P<nextLoc>)$', 'Home.views.login'),
url(r'^logout/$', 'Home.views.logout'),

Mon views.py dans la Maison de l'app est comme suit:

def login(request,nextLoc):
    if request.method == "POST":
        form = AuthenticationForm(request.POST)
        user=auth.authenticate(username=request.POST['username'],password=request.POST['password'])
        if user is not None:
            if user.is_active:
                auth.login(request, user)
                return redirect(nextLoc)
            else:
                error='This account has been disabled by the administrator. Contact the administrator for enabling the said account'
        else:
            error='The username/password pair is incorrect. Check your credentials and try again.'

    else:
        if request.user.is_authenticated():
            return redirect("/profile/")
        form = AuthenticationForm()
        error=''
    return render_to_response('login.html',{'FORM':form,'ERROR':error},context_instance=RequestContext(request))

def logout(request):
    auth.logout(request)
    return redirect('/')

Maintenant, quand je vais à la page de connexion, elle s'ouvre comme prévu. Après avoir soumis le formulaire, j'obtiens un message d'erreur qui dit qu'il ne peut pas trouver le module d'url. Après avoir creusé un peu, j'ai remarqué que la redirection("/") en fait se traduit par http://localhost/login/ au lieu de http://localhost/. La même chose arrive dans la déconnexion, c'est à dire qu'il essaie de l'ouverture de l'url http://localhost/logout/ au lieu de http://localhost/. Fondamentalement, lorsque la page est ouverte est http://localhost/login, le redirect('/') ajoute le /à la fin de l'url courante, et voila - je obtenir une url que je n'attendais pas - http://localhost/login/. Je n'arrive pas à rediriger vers la racine du site à l'aide de la redirection.

Merci de m'aider avec cela et si possible aussi d'expliquer la cause de ce comportement irrationnel de Django

  • Avez-vous essayé HttpResponseRedirect ? de django.http importation HttpResponseRedirect def logout(demande): retour HttpResponseRedirect("/")
  • où est le reste de votre urls.py? Ce qui correspond à "/" ?
InformationsquelleAutor Rohit Mitra | 2011-09-02