Quiero permitir que un usuario inicie sesión antes de ver páginas. ¿Hay alguna plantilla incorporada para que el usuario inicie sesión, para que no tenga que escribir mi propia página de inicio de sesión?¿Hay una plantilla de inicio de sesión integrada en Django?
Respuesta
Sí. Puede leer todos los detalles aquí: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... pero aquí hay algunos puntos de la bala:
- añadir
'django.contrib.auth.middleware.AuthenticationMiddleware'
-MIDDLEWARE_CLASSES
ensettings.py
- añadir
'django.contrib.auth
'y'django.contrib.contenttypes'
-INSTALLED_APPS
ensettings.py
- configuración de una dirección URL para el inicio de sesión usando
django.contrib.auth.views.login
para la vista, comourl(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
- En su vista, incluya el decorador login_required y agréguelo antes de su 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 my_template_directory/registration/login.html
. Se puede encontrar más información sobre esa plantilla en el enlace al comienzo de esta publicación.
Gracias por la información. Obtengo una excepción: TemplateDoesNotExist Sin embargo, existe la página de inicio de sesión de administrador (también de la carpeta de plantillas). – stanleyxu2005
puede pasar un argumento 'template_name': 'path/to/your/template.html' en el urlconf para asegurarse de que está tratando de leer la plantilla desde el lugar correcto –
@ stanleyxu2005 si desea usar la plantilla predeterminada , necesita crearlo en una subcarpeta del directorio de plantillas. – Brant
Como se mencionó en los comentarios del autor, la manera 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),
)
Por lo que yo sé, la adición de los r'^accounts/$'
y r'^accounts/profile/$'
URL no es necesario a menos que se requiera la administración del perfil del usuario.
Según lo sugerido por @mmatt en los comentarios, configure LOGIN_REDIRECT_URL = '/'
en settings.py
para evitar el redireccionamiento predeterminado a /accounts/profile/
después del inicio de sesión. Consulte LOGIN_REDIRECT_URL en la documentación de configuración de Django.
Esto también debería funcionar en Django 2.x usando path
en lugar de url
de forma adecuada.
Establezca 'LOGIN_REDIRECT_URL = '/'' en su settings.py para redirigir a una página que no sea/accounts/profile. – mehmet
Soporte para argumentos de vista de cadena en 'url()' [se ha eliminado con Django 1.10] (https://docs.djangoproject.com/en/1.11/releases/1.10/#features-removed-in-1-10) . Use 'from import django.contrib.auth.views import login' y' url (r '^ accounts/login/$', login, ... 'en su lugar (y similar para cerrar la sesión). – Evert
Gracias, actualizado. – mrts
Si desea tomar una ruta rápida para comenzar a usarlo, le recomiendo usar el URLConf proporcionado.
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
Y a plantilla de inicio de sesión de muestra en la misma página; https://docs.djangoproject.com/en/1.8/topics/auth/default/#all-authentication-views Parece que no hay incorporados? Y tampoco registro, se ve como si necesitara un módulo de terceros para eso: https://www.djangopackages.com/grids/g/registration/ –
Autocorrección: algunas vistas tienen plantillas integradas, como 'accounts/password_reset /', others don ' Me gusta 'accounts/login /'. –
El más upvoted response por @brant es técnicamente incorrecto. Django provee vistas predeterminadas para manejar la funcionalidad de inicio de sesión, pero por el documentation no proporciona una plantilla:
Django proporciona ninguna plantilla por defecto para las vistas de autenticación. Debe crear sus propias plantillas para las vistas que desea usar. El contexto de la plantilla está documentado en cada vista, vea Todas las vistas de autenticación.
- 1. Django: detectar el inicio de sesión de administrador en la vista o plantilla
- 2. Configuración elegante de inicio de sesión de Python en Django
- 3. inicio de sesión() en el marco de prueba de Django
- 4. Ataques de inicio de sesión de fuerza bruta en Django
- 5. iis: Autenticación de Windows integrada todavía aparece inicio de sesión de información de cuenta
- 6. Django: HTTPS solo para la página de inicio de sesión?
- 7. ¿La redirección de inicio de sesión de Django no funciona?
- 8. ¿Cómo extiendo el formulario de "inicio de sesión" de Django?
- 9. Implementación del inicio de sesión único (SSO) con Django
- 10. Inicio de sesión de Django, URL de salida y nombre de usuario actual
- 11. por qué hay un argumento de inicio en función suma integrada de pitón
- 12. ¿Hay una función de identidad integrada en python?
- 13. Cómo limito la cantidad de intentos de inicio de sesión en Django
- 14. Poner un formulario de inicio de sesión django en cada página
- 15. Iniciando sesión sin mostrar una página de inicio de sesión
- 16. itertools.groupby en una plantilla django
- 17. Crear una sesión de inicio de sesión interactiva
- 18. Inicio de sesión en J2ME
- 19. Crear una sesión en Django
- 20. Symfony FOSUserBundle - incluye el formulario de inicio de sesión en la plantilla de diseño
- 21. Módulo% en plantilla de Django
- 22. Python: Cómo "bifurcar" una sesión en django
- 23. Código de inicio de sesión en Xcode
- 24. página de inicio de sesión en phpmyadmin
- 25. ¿Hay alguna manera de presentar dinámicamente una versión oculta de un campo django en una plantilla?
- 26. plantilla de renderizado Django dentro de una plantilla
- 27. Django iniciar sesión/cerrar sesión
- 28. Django: accediendo a las variables de sesión desde dentro de una plantilla?
- 29. Iniciar sesión en PostgreSQL - Error de inicio de sesión
- 30. ¿Cómo implemento una pantalla de inicio de sesión en GWT?
'Django proporciona ** ninguna plantilla predeterminada ** para las vistas de autenticación. Debería crear sus propias plantillas para las vistas que quiere usar. ' –