then - django logout me redirige a la página de administración
register and login django (7)
Estaba experimentando el mismo problema después de Django por ejemplo ... encontré que esta URL me funcionó
url(r''^logout/$'', ''django.contrib.auth.views.logout'', { ''template_name'': ''account/logout.html'',}, name=''logout'' ),
He proporcionado una funcionalidad de inicio de sesión simple. Para cerrar sesión, traté de usar el integrado. Este es mi urls.py:
(r'''', include(''django.contrib.auth.urls'')),
Y este es mi archivo de plantilla:
{% if user.is_authenticated %}
logged in as {{ user }}
(<a href="{% url "logout" %}">logout</a>)
{% else %}
También he habilitado el sitio predeterminado de administración de django. Cuando hago clic en logout
, me muestra la vista de cierre de sesión de administración. ¿Cómo puedo pasar el atributo logout next page para decirle a django qué vista renderizar?
La respuesta más rápida es:
a) asegúrese de que su aplicación aparezca antes de django.contrib.admin en las aplicaciones instaladas en settings.py Y b) asegúrese de que su plantilla se llame log_out.html
Según los documentos, puede proporcionar el parámetro next_page a la vista de cierre de sesión. https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.logout
(r''^logout/$'', ''django.contrib.auth.views.logout'',
{''next_page'': ''/logged_out/''})
Si está viendo la página de cierre de sesión del sitio de administración de Django en lugar de su propia página de cierre de sesión (su_aplicación / plantillas / registro / log_out.html), verifique la configuración INSTALLED_APPS de su proyecto y asegúrese de que django.contrib.admin venga después ''tu solicitud''. Ambas plantillas están ubicadas en la misma ruta relativa y el cargador de plantillas Django usará la primera que encuentre.
Simplemente reemplace los cargadores aquí, y las plantillas de autenticación se encontrarán en "su_procedimiento_apps / plantillas / registro":
TEMPLATES = [
{
''BACKEND'': ''django.template.backends.django.DjangoTemplates'',
''DIRS'': [os.path.join(BASE_DIR, ''templates'')],
''OPTIONS'': {
''context_processors'': [
''django.template.context_processors.debug'',
''django.template.context_processors.request'',
''django.contrib.auth.context_processors.auth'',
''django.contrib.messages.context_processors.messages'',
],
''loaders'': [
''django.template.loaders.filesystem.Loader'',
''django.template.loaders.app_directories.Loader'',
],
},
},
]
Django v2.1
Todo esto está bastante bien explicado en el manual, ¿hay algo específico que no entiendas?
https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-out
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success page.
Alternativamente si no quieres crear tu propia vista.
https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
{% url ''logout'' next=''/some/url/'' %}
Probado en Django 1.6:
Lo que hago es agregar esto en mi urls.py
:
(r''^management/logout/$'', ''django.contrib.auth.views.logout''),
Y luego lo usé:
<a href="{% url "django.contrib.auth.views.logout" %}?next=/">Log out</a>
Para el next
argumento, apunta a la URL correcta.
Probado en Django 2.1
Adjuntar a urlpatterns
en urls.py
:
from django.contrib.auth import views as auth_views
urlpatterns = [
path(''logout/'', auth_views.LogoutView.as_view(), name=''logout''),
]
Y luego usarlo en la plantilla:
<a href="{% url "logout" %}?next=/">logout</a>
Más información se puede encontrar here .