Je souhaite autoriser un utilisateur à se connecter avant de voir les pages. Existe-t-il un modèle intégré pour la connexion des utilisateurs, de sorte que je n'ai pas à écrire ma propre page de connexion?
Oui. Vous pouvez tout lire ici: https://docs.djangoproject.com/en/1.8/topics/auth/default/#Django.contrib.auth.decorators.login_required ... mais ici sont quelques puces:
'Django.contrib.auth.middleware.AuthenticationMiddleware'
à MIDDLEWARE_CLASSES
dans settings.py
'Django.contrib.auth
'et 'Django.contrib.contenttypes'
à INSTALLED_APPS
dans settings.py
Django.contrib.auth.views.login
pour la vue, comme url(r'^login/$', 'Django.contrib.auth.views.login',name="my_login")
views.py ...
from Django.contrib.auth.decorators import login_required
@login_required
def home(request):
return HttpResponse('Home Page')
Par défaut, vous placez ensuite le modèle dans my_template_directory/registration/login.html
. De plus amples informations sur ce modèle peuvent être trouvées sur le lien au début de cet article.
Comme mentionné dans les commentaires de l'auteur, la façon la plus simple de procéder consiste à ajouter les lignes suivantes à 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),
)
Pour autant que je sache, l'ajout de r'^accounts/$'
et r'^accounts/profile/$'
Les URL ne sont pas nécessaires sauf si la gestion du profil utilisateur est requise.
Comme suggéré par @mmatt dans les commentaires, définissez LOGIN_REDIRECT_URL = '/'
dans settings.py
pour éviter la redirection par défaut vers /accounts/profile/
après la connexion. Voir LOGIN_REDIRECT_URL dans Django documentation des paramètres.
Cela devrait également fonctionner dans Django 2.x en utilisant path
au lieu de url
de manière appropriée.
Le plus réponse positive par @brant est techniquement incorrect. Django fournit des vues par défaut pour gérer la fonctionnalité de connexion mais selon la documentation ne fournit pas de modèle:
Django ne fournit aucun modèle par défaut pour les vues d'authentification. Vous devez créer vos propres modèles pour les vues que vous souhaitez utiliser. Le contexte du modèle est documenté dans chaque vue, voir Toutes les vues d'authentification.
Si vous souhaitez prendre un itinéraire rapide pour être opérationnel, je vous recommande d'utiliser l'URLConf fourni.
par exemple:
urlpatterns = [
url('^', include('Django.contrib.auth.urls'))
]
Voir plus de détails dans la documentation Django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-Django.contrib.auth. vues
Semblable à la réponse de mrts, dans Django plus récent, vous pouvez utiliser LoginView . Vous pouvez personnaliser davantage le modèle en définissant le contexte du modèle comme title
, site_title
etc. tel qu'utilisé dans admin/base.html afin qu'il ne ressemble pas à une connexion administrateur.
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'),
]