Hay un built-in de inicio de sesión de la plantilla en Django?

Quiero dejar que un usuario de la sesión antes de ver las páginas. Hay alguna plantilla integrada para el inicio de sesión de usuario, así que no tengo que escribir mi propia página de inicio de sesión?

  • ‘Django ofrece ninguna plantilla predeterminada para la autenticación de vistas. Debe crear sus propias plantillas para las vistas que desea utilizar.’

5 Kommentare

  1. 46

    Sí. Usted puede leer todo acerca de ella aquí: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required … pero aquí hay algunos puntos:

    • agregar 'django.contrib.auth.middleware.AuthenticationMiddleware' a MIDDLEWARE_CLASSES en settings.py
    • agregar 'django.contrib.auth‘ y 'django.contrib.contenttypes' a INSTALLED_APPS en settings.py
    • configuración de una dirección URL para el inicio de sesión mediante django.contrib.auth.views.login para la vista, tales como url(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
    • En su opinión, incluir la login_required decorador y agregar antes de la vista. Por ejemplo…

    views.py…

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def home(request):
      return HttpResponse('Home Page')

    Por defecto, a continuación, poner la plantilla en el interior de my_template_directory/registration/login.html . Más info acerca de que la plantilla se puede encontrar en el enlace al principio de este post.

    • Gracias por la información. Puedo obtener una excepción: TemplateDoesNotExist sin Embargo, el admin de la página de inicio de sesión (también de la plantilla de carpeta) existe.
    • puede pasar en un ‘template_name’:’path/to/your/template.html el argumento en la urlconf para estar seguro de que está tratando de leer la plantilla desde el lugar correcto
    • si desea utilizar la plantilla predeterminada, necesitamos crear en una subcarpeta del directorio de plantillas.
    • El django «logout» plantilla no existe, sólo el «login» de la plantilla no se encuentra. Yo soy de amortiguación de buceo
    • Gracias a todos ustedes. Me han resuelto este problema mediante el administrador de inicio de sesión/cierre de sesión de plantillas para los usuarios normales. # la incorporada en sign-in/out módulo (r’^cuentas/logout/$’, ‘django.contrib.auth.vistas.logout’), (r’^/cuentas de usuario/$’, ‘django.contrib.auth.vistas.inicio de sesión’, {‘template_name’: ‘admin/login.html’}), (r’^cuentas/$’, ‘django.vistas.genérica.simple.redirect_to’, {‘url’: ‘/’}), (r’^cuentas/perfil/$’, ‘django.vistas.genérica.simple.redirect_to’, {‘url’: ‘/’}),
    • ¿Te importaría explicar un poco mejor lo que han hecho uso de las plantillas de administración de django en el inicio de sesión/cierre de sesión vistas?
    • En caso de que alguien más encontró que el admin sugerencia útil, la correcta redirección urls.py en Django 1.5+ es: url(r'^accounts/profile/$', RedirectView.as_view(url='/')), url(r'^accounts/$', RedirectView.as_view(url='/')),
    • Hice un poco de bricolaje y resumir todos estos comentarios en la respuesta. Espero que ayude.
    • Mi edición con el resumen me rechazaron, así que me voy a presentar como dos comentarios en su lugar. Disculpas por el formato. Para utilizar el inicio de sesión de la plantilla que está construido en el sitio de administración, tendrá las importaciones para empezar: from django.conf.urls import patterns, include, url from django.contrib import admin from django.views.generic.base import RedirectView voy a poner las tripas por separado, en un comentario.
    • urlpatterns = patterns('', ↵ ` # El administrador de la aplicación` ↵ ` url(r’^admin/’, include(admin.sitio.url),` ↵ ` # Como se ha comentado por @stanleyxu2005` ↵ ` url(r’^cuentas/logout/$’, ‘django.contrib.auth.vistas.logout’),` ↵ ` url(r’^/cuentas de usuario/$’, ‘django.contrib.auth.vistas.inicio de sesión’, {‘template_name’: ‘admin/login.html’}),` ↵ ` # Como se ha comentado por @Pterosaurios` ↵ ` url(r’^cuentas/perfil/$’, RedirectView.as_view(url=’/’)),` ↵ ` url(r’^cuentas/$’, RedirectView.as_view(url=’/’)),` ↵ ` # su propia Url ir de aquí» ↵ )
    • «La plantilla» – lo que la plantilla? Eso es precisamente lo que la pregunta está pidiendo. No hay ninguna plantilla predeterminada para la autenticación de puntos de vista según el enlace suministrado y si no lo proporciona, los errores surgen.
    • las sugerencias anteriormente trabajó para mí. Este es mi urls.py verbadim:
    • de django.conf.url import url de django.contrib importación de administración de django.conf.direcciones url de importación de patrones incluyen, de la dirección url de django.contrib importación de administración de django.vistas.genérica.base de importación RedirectView de django.contrib.auth.decoradores de importación login_required urlpatterns = [ url(r’^admin/’, admin.sitio.las direcciones url),
    • url(r’^admin/’, include(admin.sitio.url), url(r’^cuentas/logout/$’, ‘django.contrib.auth.vistas.logout’), url(r’^/cuentas de usuario/$’, ‘django.contrib.auth.vistas.inicio de sesión’, {‘template_name’: ‘admin/login.html’}), url(r’^cuentas/perfil/$’, RedirectView.as_view(url=’/’)), url(r’^cuentas/$’, RedirectView.as_view(url=’/’)), ]
    • El link proporciona un login.html ejemplo.
    • He encontrado esta respuesta para obtener el duplicado de una pregunta muy útil: esto proporciona todos los extras adicionales, tales como un formulario de cambio de contraseña así (todos en Django admin estilo).
    • Este es un buen sin embargo incorrecta respuesta. El documentación establece claramente la respuesta corta es que No: «Django proporciona ninguna plantilla predeterminada para la autenticación de vistas. Debe crear sus propias plantillas para las vistas que desea utilizar.».

  2. 32

    Como se ha mencionado en los comentarios por el autor, la forma más fácil de hacer esto es añadir las siguientes líneas a urls.py:

    from django.contrib.auth.views import login, logout
    
    urlpatterns = patterns('',
        url(r'^accounts/login/$', login, {'template_name': 'admin/login.html'}),
        url(r'^accounts/logout/$', logout),
    )

    Hasta donde yo sé, la adición de la r'^accounts/$' y r'^accounts/profile/$' las direcciones Url no es necesario a menos que el perfil de usuario que se requiere la administración.

    Según lo sugerido por @mmatt en los comentarios, establecer LOGIN_REDIRECT_URL = '/' en settings.py para evitar el default redirigir a /accounts/profile/ después de inicio de sesión. Ver LOGIN_REDIRECT_URL en Django documentación sobre la configuración.

    Esto también debería funcionar en Django 2.x uso de path en lugar de url adecuadamente.

    • Conjunto de LOGIN_REDIRECT_URL = '/' en su settings.py para redireccionar a una página distinta de /cuentas/perfil.
    • Apoyo para la cadena de ver los argumentos en url() se ha eliminado con Django 1.10. Uso from import django.contrib.auth.views import login y url(r'^accounts/login/$', login, ... lugar (y similares para cerrar la sesión).
  3. 14

    La mayoría de los upvoted respuesta por @brant es técnicamente incorrecta. Django ofrece vistas predeterminadas para manejar la funcionalidad de inicio de sesión, pero por el documentación no proporciona una plantilla:

    Django proporciona ninguna plantilla predeterminada para la autenticación de vistas. Debe crear sus propias plantillas para las vistas que desea utilizar. La plantilla contexto se documenta en cada vista, ver la autenticación de Todos los puntos de vista.

  4. 4

    Si quieres tomar una ruta rápida para levantarse y correr recomiendo el uso de la URLConf siempre.

    por ejemplo:

    urlpatterns = [
        url('^', include('django.contrib.auth.urls'))
    ]

    Ver más detalles en la documentación de django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views

  5. 4

    Similar a mrts respuesta, en la más reciente Django, puede utilizar el LoginView.
    Usted puede personalizar la plantilla de configuración de plantilla de contexto como title, site_title etc. tal como se utiliza en admin/base.html para que no se parezca a un inicio de sesión de administrador.

    from django.contrib.auth.views import LoginView
    
    urlpatterns = [
        url(  
            r'^accounts/login/$',  
            LoginView.as_view(
                template_name='admin/login.html',
                extra_context={         
                  'title': 'Login',
                  'site_title': 'My Site',
                  'site_header': 'My Site Login'},
            name='login'),
    ]

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea