Le fichier views.py de mon application "Connexion" :
[code]
# -*- coding:utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
from django.template import Context, loader, RequestContext
from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.core.context_processors import csrf
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
def Identification(request):
try :
nom = request.POST['nom']
except :
return(render_to_response('Identification.html',
context_instance=RequestContext(request)))
else :
password = request.POST['password']
utilisateur = authenticate(username=nom, password=password)
if utilisateur is not None :
if utilisateur.is_active:
login(request, utilisateur)
#return(render_to_response('Principale.html',
{'nom':nom},
context_instance=RequestContext(request)))
return(HttpResponseRedirect(reverse('Metalangue.Interrogation.views.Principale')))
else :
return(render_to_response('Identification.html', {'erreur':'Votre
compte a été désactivé'}, context_instance=RequestContext(request)))
else :
return(render_to_response('Identification.html',
{'erreur':'Login et/ou
mot de passe incorrect(s)'}, context_instance=RequestContext(request)))
@login_required(login_url='/Metalangue/Connexion/')
def Deconnexion(request):
logout(request)
return(HttpResponseRedirect(reverse('Metalangue.Connexion.views.Identification')))
[/code]
Le fichier views.py de mon application "Interrogation" :
[code]
# -*- coding:utf-8 -*-
from django.http import HttpResponse, HttpResponseRedirect
from django.template import Context, loader, RequestContext
from django.shortcuts import render_to_response
from django.core.urlresolvers import reverse
from django.core.context_processors import csrf
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
@login_required(login_url='/Metalangue/Connexion/')
def Principale(request):
"""
Simple test pour l'instant.
"""
return(render_to_response('Principale.html'))
[/code]
Ma template "BASE.html" :
[code]
{% load staticfiles %}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8"/>
<title>{% block title %}Metalangue | Connexion{% endblock %}</title>
<link rel="stylesheet" href="{% static 'Interrogation/style.css' %}"/>
</head>
<body>
<div id="logo"><a href="/Metalangue/Principale"><img src="{% static
'Interrogation/logo.png' %}" alt="logo"/></a></div>
<header>
<div id="listeHorizontale">
<div id="centrageLien">
<a class="puceHorizontale" href="#">Contact</a>
<a class="puceHorizontale" href="#">À propos</a>
<a class="puceHorizontale" href="#">Lien 3</a>
<a class="puceHorizontale" href="#">Lien 4</a>
<a class="puceHorizontale" href="#">Lien 5</a>
</div>
</div>
</header>
<nav>
<ul>
<li id="puceInitiale">Recherche</li>
<li id="puceInitiale2">
<form method="get" action="#">
<input type="text" name="terme" id="terme" size="6"/>
</form>
</li>
<li class="puceIntermediaire"><a
href="/Metalangue/Principale/">Accueil</a></li>
<li class="puceIntermediaire"><a
href="/Metalangue/Deconnexion/">Déconnexion</a></li>
<li class="puceIntermediaire"><a href="#">Consulter</a></li>
{% if perms.BaseXML.creation_modification %}
<li class="puceIntermediaire"><a href="#">Éditer</a></li>
<li class="puceIntermediaire"><a href="#">Créer</a></li>
{% endif %}
</ul>
</nav>
<section id="corps">
{% block corps %}
{% endblock %}
</section>
</body>
</html>
[/code]
Ma template 'Identification.html' :
[code]
{% extends 'BASE_anter.html' %}
{% block title %}Metalangue | Connexion{% endblock %}
{% block corps %}
<form method="post" action=".">
{% csrf_token %}
<fieldset>
<legend>Connexion à la base Métalangue</legend>
<p>
<label for="nom">Nom d'utilisateur</label>
<input type="text" name="nom" id="nom" size="30" maxlength="30" required
autofocus/>
</p>
<p>
<label for="password">Mot de passe</label>
<input type="password" name="password" id="password" size="30"
required/>
</p>
<p>
<input type="submit" value="Se connecter"></input>
</p>
</fieldset>
</form>
{% endblock %}
[/code]
Mon urls.py :
[code]
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url('^Metalangue/Connexion/$',
'Metalangue.Connexion.views.Identification'),
url('^Metalangue/Deconnexion/$',
'Metalangue.Connexion.views.Deconnexion'),
url('^Metalangue/Principale/$',
'Metalangue.Interrogation.views.Principale'),
url(r'^Metalangue/admin/', include(admin.site.urls)),
)
[/code]
Et le 'dump' demandé :
[code]
[{"pk": 4, "model": "contenttypes.contenttype", "fields": {"model":
"contenttype", "name": "content type", "app_label": "contenttypes"}},
{"pk": 8, "model": "contenttypes.contenttype", "fields": {"model": "fiche",
"name": "fiche", "app_label": "BaseXML"}}, {"pk": 2, "model":
"contenttypes.contenttype", "fields": {"model": "group", "name": "group",
"app_label": "auth"}}, {"pk": 7, "model": "contenttypes.contenttype",
"fields": {"model": "logentry", "name": "log entry", "app_label":
"admin"}}, {"pk": 1, "model": "contenttypes.contenttype", "fields":
{"model": "permission", "name": "permission", "app_label": "auth"}}, {"pk":
5, "model": "contenttypes.contenttype", "fields": {"model": "session",
"name": "session", "app_label": "sessions"}}, {"pk": 6, "model":
"contenttypes.contenttype", "fields": {"model": "site", "name": "site",
"app_label": "sites"}}, {"pk": 3, "model": "contenttypes.contenttype",
"fields": {"model": "user", "name": "user", "app_label": "auth"}}, {"pk":
"1b3f42168b0bc563f2614a87402fbf08", "model": "sessions.session", "fields":
{"expire_date": "2012-08-03T14:53:44Z", "session_data":
"MDA3OGU1ZTA1YjA1Y2EzYjI2YWZiYmY1ZTE0MDc2YmY4Mzc1MjFlOTqAAn1xAS4=\n"}},
{"pk": "3e0512a26d530d4abd3935555c57dc8b", "model": "sessions.session",
"fields": {"expire_date": "2012-07-31T14:21:13Z", "session_data":
"MDA3OGU1ZTA1YjA1Y2EzYjI2YWZiYmY1ZTE0MDc2YmY4Mzc1MjFlOTqAAn1xAS4=\n"}},
{"pk": "598a65482f1ffb33da92f9ce68631742", "model": "sessions.session",
"fields": {"expire_date": "2012-08-06T06:24:16Z", "session_data":
"MDA3OGU1ZTA1YjA1Y2EzYjI2YWZiYmY1ZTE0MDc2YmY4Mzc1MjFlOTqAAn1xAS4=\n"}},
{"pk": "71438ed36716a87d6ce7b04ae8420218", "model": "sessions.session",
"fields": {"expire_date": "2012-08-03T16:48:17Z", "session_data":
"ZDQ2NTAxZWJiYmFlNGYyYjI4ZjY2MGY2NWYzZjJiZGZjNmY5OTNjNDqAAn1xAShVEl9hdXRoX3Vz\nZXJfYmFja2VuZHECVSlkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZHED\nVQ1fYXV0aF91c2VyX2lkcQSKAQl1Lg==\n"}},
{"pk": "b6bf59ecc2c82fc4c0e54ee9fa873df7", "model": "sessions.session",
"fields": {"expire_date": "2012-08-02T15:30:24Z", "session_data":
"ZWRiZDMzYWNkN2RkNzg0YjljNTgxMzQ4YTNiNDg2NjczNzU4YTQxODqAAn1xAShVCnRlc3Rjb29r\naWVVBndvcmtlZFUSX2F1dGhfdXNlcl9iYWNrZW5kcQJVKWRqYW5nby5jb250cmliLmF1dGguYmFj\na2VuZHMuTW9kZWxCYWNrZW5kcQNVDV9hdXRoX3VzZXJfaWRxBIoBCHUu\n"}},
{"pk": "c2d6565732afb5119b4cba045152d79a", "model": "sessions.session",
"fields": {"expire_date": "2012-08-04T09:19:04Z", "session_data":
"MTA0MDZlZGI3YTU1NTAyZmE4ODhhMmE0MWVjMjk5YWQ1Nzk0NWQ1NzqAAn1xAShVDV9hdXRoX3Vz\nZXJfaWSKAQlVEl9hdXRoX3VzZXJfYmFja2VuZFUpZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5k\ncy5Nb2RlbEJhY2tlbmRxAnUu\n"}},
{"pk": 1, "model": "sites.site", "fields": {"domain": "example.com",
"name": "example.com"}}, {"pk": 19, "model": "auth.permission", "fields":
{"codename": "add_logentry", "name": "Can add log entry", "content_type":
7}}, {"pk": 20, "model": "auth.permission", "fields": {"codename":
"change_logentry", "name": "Can change log entry", "content_type": 7}},
{"pk": 21, "model": "auth.permission", "fields": {"codename":
"delete_logentry", "name": "Can delete log entry", "content_type": 7}},
{"pk": 4, "model": "auth.permission", "fields": {"codename": "add_group",
"name": "Can add group", "content_type": 2}}, {"pk": 5, "model":
"auth.permission", "fields": {"codename": "change_group", "name": "Can
change group", "content_type": 2}}, {"pk": 6, "model": "auth.permission",
"fields": {"codename": "delete_group", "name": "Can delete group",
"content_type": 2}}, {"pk": 1, "model": "auth.permission", "fields":
{"codename": "add_permission", "name": "Can add permission",
"content_type": 1}}, {"pk": 2, "model": "auth.permission", "fields":
{"codename": "change_permission", "name": "Can change permission",
"content_type": 1}}, {"pk": 3, "model": "auth.permission", "fields":
{"codename": "delete_permission", "name": "Can delete permission",
"content_type": 1}}, {"pk": 7, "model": "auth.permission", "fields":
{"codename": "add_user", "name": "Can add user", "content_type": 3}},
{"pk": 8, "model": "auth.permission", "fields": {"codename": "change_user",
"name": "Can change user", "content_type": 3}}, {"pk": 9, "model":
"auth.permission", "fields": {"codename": "delete_user", "name": "Can
delete user", "content_type": 3}}, {"pk": 22, "model": "auth.permission",
"fields": {"codename": "add_fiche", "name": "Can add fiche",
"content_type": 8}}, {"pk": 23, "model": "auth.permission", "fields":
{"codename": "change_fiche", "name": "Can change fiche", "content_type":
8}}, {"pk": 25, "model": "auth.permission", "fields": {"codename":
"creation_modification", "name": "creation_modification", "content_type":
8}}, {"pk": 24, "model": "auth.permission", "fields": {"codename":
"delete_fiche", "name": "Can delete fiche", "content_type": 8}}, {"pk": 10,
"model": "auth.permission", "fields": {"codename": "add_contenttype",
"name": "Can add content type", "content_type": 4}}, {"pk": 11, "model":
"auth.permission", "fields": {"codename": "change_contenttype", "name":
"Can change content type", "content_type": 4}}, {"pk": 12, "model":
"auth.permission", "fields": {"codename": "delete_contenttype", "name":
"Can delete content type", "content_type": 4}}, {"pk": 13, "model":
"auth.permission", "fields": {"codename": "add_session", "name": "Can add
session", "content_type": 5}}, {"pk": 14, "model": "auth.permission",
"fields": {"codename": "change_session", "name": "Can change session",
"content_type": 5}}, {"pk": 15, "model": "auth.permission", "fields":
{"codename": "delete_session", "name": "Can delete session",
"content_type": 5}}, {"pk": 16, "model": "auth.permission", "fields":
{"codename": "add_site", "name": "Can add site", "content_type": 6}},
{"pk": 17, "model": "auth.permission", "fields": {"codename":
"change_site", "name": "Can change site", "content_type": 6}}, {"pk": 18,
"model": "auth.permission", "fields": {"codename": "delete_site", "name":
"Can delete site", "content_type": 6}}, {"pk": 1, "model": "auth.group",
"fields": {"name": "lecteurs", "permissions": []}}, {"pk": 2, "model":
"auth.group", "fields": {"name": "redacteurs", "permissions": [25]}},
{"pk": 1, "model": "auth.user", "fields": {"username": "joel",
"first_name": "", "last_name": "", "is_active": true, "is_superuser": true,
"is_staff": true, "last_login": "2012-07-23T06:23:41Z", "groups": [],
"user_permissions": [], "password":
"pbkdf2_sha256$10000$nX2snmwZT1cC$zFybGiAw0aftMchPhN5qilNElktGlVq9mNeBVHjlNF8=",
"email": "[email protected]", "date_joined": "2012-07-17T12:29:36Z"}},
{"pk": 8, "model": "auth.user", "fields": {"username": "lecteur",
"first_name": "", "last_name": "", "is_active": true, "is_superuser":
false, "is_staff": false, "last_login": "2012-07-20T16:19:26Z", "groups":
[1], "user_permissions": [], "password":
"pbkdf2_sha256$10000$BEDmbwNhWFHA$4pcuoeV6o1zxy7htkN+L1zTFHC5I0A9DMjSnlZ+pbO4=",
"email": "", "date_joined": "2012-07-19T13:07:32Z"}}, {"pk": 9, "model":
"auth.user", "fields": {"username": "redacteur", "first_name": "",
"last_name": "", "is_active": true, "is_superuser": false, "is_staff":
false, "last_login": "2012-07-23T06:24:07Z", "groups": [2],
"user_permissions": [], "password":
"pbkdf2_sha256$10000$hUC1ziiUb3qL$OFcT9775GVXt+48IKqzYDmch3erVi5LeZ1QS9eZ9bYI=",
"email": "", "date_joined": "2012-07-19T13:08:01Z"}}]
[/code]
Pour résumer, pour l'authentification, j'utilise donc un simple
formulaire en méthode post ; si l'utilisateur a envoyé des champs, je
tente de l'authentifier puis de le logger, sinon je le renvoie sur la page
de connexion.
A noter que dans ma première views.py, j'ai remplacé mon
render_to_response initial (ligne commentée) par un httpresponseredirect ;
désormais, cela ne marche même plus, je ne vois plus les options
supplémentaires s'afficher dans ma page.
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django