Précédent   Forum des professionnels en informatique > Autres langages > Python & Zope > Réseau/Web > Django
Django Forum d'entraide sur le framework Web Django
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 00h06   #1
Invité régulier
 
Conseil - Consultant en systèmes d'information
Inscription : février 2012
Messages : 27
Détails du profil
Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : février 2012
Messages : 27
Points : 7
Points : 7
Par défaut Django et les sessions

Bonjour tout le monde!

Je débute tout juste avec Django, mais aussi avec les sessions et j'aurais voulu vous demander plusieurs choses. Vous allez voir j'ai un peu de retard par rapport à vous ;-)

Comment les sessions fonctionnent-elles? Quelles sont les étapes pour mettre en place proprement les sessions sur Django?
Est-ce que l'authentification est l'obtention d'une session qui protège toutes les pages d'une application? Donc si l'on met 'authentification seulement sur la première plage, ça protège implicitement toues les autres pages? Sans authentification, les autres pages de mon application sont bien protégées? Si non, comment protéger les pages d'une application?
Par ailleurs, comment dire qu'un utilisateur n'a accès qu'a certaines pages et d'autres non?

Autre point, avec Django, comment peut-on visualiser la BDD et son contenu/archi?



Merci d'avance pour vos retours!!!

Tarnaud
Tarnaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 19h08   #2
Modérateur
 
Avatar de pacificator
 
Inscription : août 2006
Messages : 1 070
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2006
Messages : 1 070
Points : 1 344
Points : 1 344
Bonjour et bienvenue sur le forum.

Citation:
Comment les sessions fonctionnent-elles?
Les sessions nécessite un cookie côté navigateur contenant uniquement l'identifiant de la session.
Côté serveur, les sessions sont enregistrées dans la base de données.
Il est possible de conserver des données dans la session qui seront serialisées dans la base.

Citation:
Quelles sont les étapes pour mettre en place proprement les sessions sur Django?
Rien, par défaut, les sessions sont activés dans settings.py:
Code :
1
2
3
MIDDLEWARE_CLASSES = (
....
'django.contrib.sessions.middleware.SessionMiddleware',
Citation:
Est-ce que l'authentification est l'obtention d'une session qui protège toutes les pages d'une application?
Non, l'authentification permet à une application de vérifier si un utilisateur est valide, une fois que celui-ci a fourni son nom d'utilisateur et son mot de passe.
Il est alors authentifié pour la durée de la session.

Citation:
Sans authentification, les autres pages de mon application sont bien protégées?
Non
Citation:
Si non, comment protéger les pages d'une application?
Pour proteger les pages de l'application, il suffit d'ajouter un décorateur devant toutes tes vues a protéger:
Code :
1
2
3
4
from django.contrib.auth.decorators import login_required
 
@login_required
def my_view(request):
Il existe une application qui permet de protéger toutes tes vues :django-private-views
Citation:
Par ailleurs, comment dire qu'un utilisateur n'a accès qu'a certaines pages et d'autres non?
Code :
1
2
3
4
from django.contrib.auth.decorators import user_passes_test
 
@user_passes_test(lambda u: u.has_perm('polls.can_vote'))
def my_view(request):
cela permet de limiter l'accès aux vues en fonction des permissions des utilisateurs.
Pour limiter l'accès certains objets, il faut utiliser une application dediée, django-guardian par exemple.

la doc est très bien faite:
Citation:
avec Django, comment peut-on visualiser la BDD et son contenu/archi?
Pour visualiser les données de la BDD, django propose une application: databrowse.
Citation:
peut-on visualiser [...] son archi?
Tu peux utiliser l'application django-extensions qui permet de génerer l'architecture de la BDD en utilisant graphviz.

Bon django
Images attachées
Type de fichier : png exemple.graphviz.png (1,00 Mo, 8 affichages)
__________________
"Etre conscient de la difficulté permet de l'éviter.."
Lao-Tseu.
pacificator est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 22h03   #3
Invité régulier
 
Conseil - Consultant en systèmes d'information
Inscription : février 2012
Messages : 27
Détails du profil
Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : février 2012
Messages : 27
Points : 7
Points : 7
Par défaut Merci Pacificator!!

Autres questions, désolé d'abuser :-)
Concernant l'application : django-private-views
Comment l'installer? Comment l'appeler? Si j'ajoute cette application, je n'ai plus besoin de faire : @login_required avant mes vues?
Pareil pour django-guardian, comment l'utiliser, comment la mettre en place?
Et the same pour django-extensions :-) Qu'est-ce que graphviz (je n'arrive pas à trouver d’exécutable)

En bref comment fonctionnent les applications! Je débute sur Django, mais je commence à comprendre la puissance du truc....


Merci infiniment, c'est vraiment super sympa!!!!
Tarnaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 22h30   #4
Modérateur
 
Avatar de pacificator
 
Inscription : août 2006
Messages : 1 070
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2006
Messages : 1 070
Points : 1 344
Points : 1 344
tu es sous quel os?
__________________
"Etre conscient de la difficulté permet de l'éviter.."
Lao-Tseu.
pacificator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 00h13   #5
Invité régulier
 
Conseil - Consultant en systèmes d'information
Inscription : février 2012
Messages : 27
Détails du profil
Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : février 2012
Messages : 27
Points : 7
Points : 7
Par défaut Windows Vista

Sinon besoin d'aide encore
J'ai mis le code suivant pour tester les sessions :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
def save_user(request, username):
	firstname = request.POST["firstname"]
	lastname = request.POST["lastname"]
	mail = request.POST["mail"]
	password = request.POST['password']
 
	user = authenticate(username=username, password=password)
	if user is not None:
		if user.is_active:
			login(request, user)
			return HttpResponseRedirect("/wikicamp/" + username + "/")
		else:
			# Return a 'disabled account' error message
			return HttpResponse('ERROR: DISABLED ACCOUNT')
	else:
		# Return an 'invalid login' error message.
		user = User(username=username, first_name=firstname, last_name=lastname, email=mail, password=password)
		user.save()
 
		return HttpResponseRedirect("/test/" + username + "/")
=> Le user.save() me crée des users avec un password en clair : si je l'affiche derrière, j'obtiens le mot de passe lisible....
Et derrière, lorsque j'essaye de me loguer avec, il tombe sur user à None, =>il tente de me les recréer.
J'obtiens l'erreur suivant :
column username is not unique
Sinon, le seul pour lequel le mdp a l'air de marcher, c'est le superuser que j'avais créé par commande avant.
Lorsque j'affiche le pwd :sha1$d615f$8679cf1feb911a6474b540d5949c20de9159bd0c
Pourquoi le message est codé ici (certainement pour ça que le mot de passe arrive à être lu....)

j'obtiens dans ce cas là aussi un message d'erreur :
global name 'login' is not defined

Une idée?

Merci encore.
Tarnaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 09h29   #6
Candidat au titre de Membre du Club
 
Serge
Inscription : février 2012
Messages : 12
Détails du profil
Informations personnelles :
Nom : Serge
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 12
Points : 14
Points : 14
Pour créer un utilisateur, passe par le manager du modèle User.
Lien vers la doc de Django.

Le mot de passe de l'utilisateur DOIT être hashé. En passant directement par User(username=username, password=password, etc...), je pense que le mot de passe n'est pas hashé. Du coup, Django t'envoie chier parce qu'il n'y a pas de correspondance quand tu fais authenticate(blabla), qui hash lui-même la string password que tu lui donnes.
Et c'est normal qu'il te dise qu'il existe déjà un utilisateur avec cet username, vu qu'il a été crée. Le problème se situe dans la gestion du mot de passe.
Sekigo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 10h11   #7
Invité régulier
 
Conseil - Consultant en systèmes d'information
Inscription : février 2012
Messages : 27
Détails du profil
Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : février 2012
Messages : 27
Points : 7
Points : 7
Comment dois-je faire alors? Je dois hasher mon mdp comment à l'écriture?
global name 'login' is not defined
Tarnaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 10h26   #8
Candidat au titre de Membre du Club
 
Serge
Inscription : février 2012
Messages : 12
Détails du profil
Informations personnelles :
Nom : Serge
Localisation : France

Informations forums :
Inscription : février 2012
Messages : 12
Points : 14
Points : 14
Je n'ai pas compris, c'est quoi ton autre problème ? Si c'est pour le global name 'login' is not defined, suffit d'importer login correctement.
Code :
from django.contrib.auth import login
Sekigo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2012, 10h37   #9
Modérateur
 
Avatar de pacificator
 
Inscription : août 2006
Messages : 1 070
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2006
Messages : 1 070
Points : 1 344
Points : 1 344
Bonjour,

pour developper sereinement, je te conseille vivement d'installer virtualenv.

Telecharge le script virtualenv.py et tu executes:virtualenv te permet de créer des environnements virtuel et de pouvoir ainsi faire cohabiter plusieurs projet qui peuvent necessiter des versions de modules differents.
virtualenv met a disposition la commande pip.
pip permet de telecharger/installer les modules python directement:
Code :
1
2
3
pip install django
pip install django-private-views
....
Je te conseille de suivre le tutorial officiel pour commencer avec django.
__________________
"Etre conscient de la difficulté permet de l'éviter.."
Lao-Tseu.
pacificator est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 14h10   #10
Invité régulier
 
Conseil - Consultant en systèmes d'information
Inscription : février 2012
Messages : 27
Détails du profil
Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : février 2012
Messages : 27
Points : 7
Points : 7
Merci!
Autre petit point de débutant, un peu pareil que les sessions (que j'ai réussit à faire marcher au passage donc merci bcp), en quoi consiste les caches exactement, quelles sont les grandes lignes? Comment les utiliser?
=> J'ai vu sur la doc, mais je suis pas bilingue donc je voudrais avoir un petit debrief en amont de ma lecture ;-)

Sinon Pacificator, concernant les applications, peux-tu juste regarder mes quelques questions plus hautes?

Thks a lot
Tarnaud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2012, 17h50   #11
Modérateur
 
Avatar de pacificator
 
Inscription : août 2006
Messages : 1 070
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : août 2006
Messages : 1 070
Points : 1 344
Points : 1 344
Citation:
Qu'est-ce que graphviz (je n'arrive pas à trouver d’exécutable)
Regarde là: http://www.graphviz.org/Download_windows.php.

Concernant les autres applications, je te renvoie aux liens donnés plus haut.
La doc est en anglais mais il y a des exemples qui aident à comprendre
__________________
"Etre conscient de la difficulté permet de l'éviter.."
Lao-Tseu.
pacificator est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web