Tworzę projekt django. Jednak natknąłem się na małą czkawkę. Moje urls.py wygląda następującoPrzekierowanie Django do root'a z widoku
url(r'^login/(?P<nextLoc>)$', 'Home.views.login'),
url(r'^logout/$', 'Home.views.logout'),
mój views.py w aplikacji Home jest następujący:
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('/')
Teraz, gdy jadę do strony logowania, to otwiera się zgodnie z oczekiwaniami. Po przesłaniu formularza pojawia się błąd informujący, że nie może znaleźć adresów URL modułów. Po krótkim wykopaniu zauważyłem, że przekierowanie ("/") faktycznie przekłada się na http://localhost/login/
zamiast na http://localhost/
. To samo dzieje się podczas wylogowywania, tzn. Próbuje otworzyć adres URL http://localhost/logout/
zamiast http://localhost/
. Zasadniczo po otwarciu strony to http://localhost/login
, redirect('/')
dodaje/na końcu bieżącego adresu URL i voila - otrzymuję URL, którego się nie spodziewałem - http://localhost/login/
. Nie mogę zmusić go do przekierowania do katalogu głównego witryny za pomocą przekierowania.
Proszę mi pomóc z tym i jeśli to możliwe także wyjaśnić przyczynę tego irracjonalnego zachowania Django
Próbowałaś HttpResponseRedirect? z importu django.http HttpResponseRedirect def wylogowania (request): \t powrót HttpResponseRedirect ("/") –
gdzie jest reszta twojej urls.py? Jaki widok odpowiada "/"? – jterrace