Django | Gérer les connections
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