2012-10-06 15 views
46

Powiel możliwe:
Django: Redirect to previous page after loginPrzekierowanie/powrót do tej samej (poprzedniej) strony w Django?

Jakie są opcje, gdy chcesz powrócić użytkownikowi na tej samej stronie w Django i jakie są plusy/minusy każdego?

Metody wiem:

  • HTTP_REFERER
  • parametr GET zawierające poprzednia adresu URL
  • dane sesji do przechowywania poprzednia adresu URL

są jakieś inne?

+8

Link mówi "po zalogowaniu". Czy zapytałem "po zalogowaniu"? To pytanie może być prawdziwym przeglądem tego tematu. Nie zasługuje na -1, zasługuje na +1. Jeeez –

+2

, a wręcz przeciwnie, logika nie różni się niczym od postu czy postu, to tylko pytanie o przekierowanie, w którym nie ma pro i con, dopóki nie zdefiniujesz jakiegoś rozumowania, twoje pytanie jest szerokie i bez odpowiednich badań czy prób. –

+3

To jest bardzo różne. Przekierowania Django i komentarzy są wbudowane. Moje pytanie dotyczy innych przypadków;) –

Odpowiedz

83

Jeden z drogi korzysta HTTP_REFERER nagłówka jak poniżej:

from django.http import HttpResponseRedirect 

def someview(request): 
    ... 
    return HttpResponseRedirect(request.META.get('HTTP_REFERER')) 

nie jestem minusy tego!

+7

Myślę, że dużym problemem byłoby to, że wielu użytkowników/przeglądarek ma wyłączony http_referer. –

+3

Czy wiesz, jak trudno jest wyłączyć nagłówek? Większość użytkowników nie wie, co to jest, nie mówiąc już o tym, jak go wyłączyć. W przeglądarkach Firefox i Chrome musisz ręcznie edytować preferencje_ (ponownie niewiele osób wie, jak to zrobić); w IE nie można go wyłączyć (jest automatycznie wyłączany dla bezpiecznych witryn). –

+35

Myślę, że byłoby jeszcze lepiej przekierować na stronę główną witryny, jeśli request.META nie jest ustawiony: return HttpResponseRedirect (request.META.get ('HTTP_REFERER', '/')) – nickzam

4

Podczas gdy pytanie i odpowiedź są stare, myślę, że brakuje w nim kilku opcji. Nie znalazłem żadnych wad metodami, byłbym szczęśliwy wiedząc, czy są jakieś?