register make loginview how and django login templates

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'' a MIDDLEWARE_CLASSES en settings.py
  • agregue ''django.contrib.auth '' y ''django.contrib.contenttypes'' a INSTALLED_APPS en settings.py
  • configure una URL para el inicio de sesión utilizando django.contrib.auth.views.login para la vista, como url(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.



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''), ]