Il existe plusieurs manières d'utiliser le login de base de Django . Nous verrons dans ce chapitre pas forcément la manière la plus facile à mettre en oeuvre, mais la plus souple.
Alors premièrement nous allons configurer notre fichier settings:
LOGIN_REDIRECT_URL = '/backoffice/' LOGIN_URL = '/' TEMPLATE_DIRS = ( BASE_DIR + '/templates/', )
Puis nous allons créer nos vues login et logout
from django.shortcuts import render from django.contrib.auth import authenticate, login, logout from django.http import * from django.views.generic import TemplateView from django.conf import settings class LoginView(TemplateView): template_name = 'front/index.html' def post(self, request, **kwargs): username = request.POST.get('username', False) password = request.POST.get('password', False) user = authenticate(username=username, password=password) if user is not None and user.is_active: login(request, user) return HttpResponseRedirect( settings.LOGIN_REDIRECT_URL ) return render(request, self.template_name) class LogoutView(TemplateView): template_name = 'front/index.html' def get(self, request, **kwargs): logout(request) return render(request, self.template_name)
Et les templates que nous associons avec:
templates/front/index.html
<form method="post" role="form" action="/"> {% csrf_token %} <input type="text" name="username" placeholder="Utilisateur"> <input type="password" name="password" placeholder="Mot de passe"> <input type="submit" value="login" /> </form>
templates/backoffice/index.html
<p>Vous êtes identifié!</p> <p><a href="/logout/">Sortir</a></p>
Il nous faut maintenant indiquer au routeur les addresses utilisées:
from django.conf.urls import patterns, include, url from rest_framework import routers from eboutique.views import * from erp.views import * from django.contrib.auth.decorators import login_required urlpatterns = patterns('', url(r'^$', LoginView.as_view()), url(r'^logout/$', LogoutView.as_view()), url(r'^backoffice/$', login_required(TemplateView.as_view(template_name='backoffice/index.html'))), )
Pour créer un superutilisateur vous pouvez passer par la ligne de commande:
python manage.py createsuperuser