2016-06-01 13 views
0

Ich habe den folgenden Code in urls.py Datei einer meiner Apps.Wie benannte URL im Parameter next_page verwenden, um nach dem Abmelden umzuleiten?

from django.conf.urls import url 
from .views import * 

urlpatterns = [ 
    url(r'^signup/$', SignUpView.as_view(), name="signup"), 
    url(r'^login/$', LoginView.as_view(), name="login"), 
    url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}, name="logout"), 
] 

Anstelle der Verwendung von '/' als 'next_page' Parameterwert, möchte ich wie 'zu Hause' benannten Parameter verwenden oder 'Index'. Wie kann ich es tun?

Antwort

1

Sie können einfach in der umgekehrten Namen für die Ansicht als der Wert für den next_page Parameter übergeben, wie django.contrib.auth.views.logout usesdjango.shortcuts.resolve_url, die ihre Dokumente als

beschreiben

Return eine URL geeignet für die Argumente übergeben. Die Argumente könnten sein:

  • Ein Modell: get_absolute_url() Funktion des Modells aufgerufen wird.
  • Ein Blick Name, ggf. mit Argumenten: urlresolvers.reverse() wird die Namen Reverse löst verwendet werden.
  • Eine URL, die unverändert zurückgegeben wird.
1

Sie können reverse_lazy() für alle Fälle verwenden, in denen Sie die aktuelle URL von einem URL-Namen bekommen müssen.

from django.core.urlresolvers import reverse_lazy 

urlpatterns = [ 
    url(r'^signup/$', SignUpView.as_view(), name="signup"), 
    url(r'^login/$', LoginView.as_view(), name="login"), 
    url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': reverse_lazy('home')}, name="logout"), 
]