make - ¿Hay una plantilla de inicio de sesión integrada en Django?
path login django (5)
Como se mencionó en los comentarios del autor, la forma más fácil de hacerlo es agregar 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é, agregar las r''^accounts/$''
r''^accounts/profile/$''
no es necesario a menos que se requiera la administración del perfil del usuario.
Tal como lo sugiere @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. Consulta LOGIN_REDIRECT_URL en la documentación de configuración de Django.
Esto también debería funcionar en Django 2.x utilizando la path
lugar de la url
adecuada.
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?
La respuesta más votada de @brant es técnicamente incorrecta. Django proporciona vistas predeterminadas para manejar la funcionalidad de inicio de sesión, pero según la documentation no proporciona una plantilla:
Django no proporciona una plantilla predeterminada 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.
Sí. Puede leer todo al respecto aquí: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... pero aquí hay algunos puntos:
- agregue
''django.contrib.auth.middleware.AuthenticationMiddleware''
aMIDDLEWARE_CLASSES
ensettings.py
- agregue
''django.contrib.auth
'' y''django.contrib.contenttypes''
aINSTALLED_APPS
ensettings.py
- configure una URL para el inicio de sesión utilizando
django.contrib.auth.views.login
para la vista, comourl(r''^login/$'', ''django.contrib.auth.views.login'',name="my_login")
- En su opinión, 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'')
De forma predeterminada, usted coloca la plantilla dentro de 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.
Si desea tomar una ruta rápida para ponerlo en funcionamiento, le recomiendo usar el URLConf proporcionado.
por ejemplo:
urlpatterns = [
url(''^'', include(''django.contrib.auth.urls''))
]
Consulte más detalles en la documentación de django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views
Similar a la respuesta de mrts, en Django más reciente, puede usar LoginView . Puede personalizar aún más la plantilla configurando el contexto de la plantilla como title
, title
, etc. tal como se utiliza en admin/base.html para que no se vea como 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''),
]