unexpected then the template returned register none next_page loginview instead got didn custom contrib auth argument and django logout

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



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



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 .