IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django et les sessions


Sujet :

Django Python

  1. #1
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    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

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour et bienvenue sur le forum.

    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.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MIDDLEWARE_CLASSES = (
    ....
    'django.contrib.sessions.middleware.SessionMiddleware',
    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.

    Sans authentification, les autres pages de mon application sont bien protégées?
    Non
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Par ailleurs, comment dire qu'un utilisateur n'a accès qu'a certaines pages et d'autres non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:

    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.
    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 Images attachées  

  3. #3
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    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!!!!

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    tu es sous quel os?

  5. #5
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut Windows Vista
    Sinon besoin d'aide encore
    J'ai mis le code suivant pour tester les sessions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut
    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.

  7. #7
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    Comment dois-je faire alors? Je dois hasher mon mdp comment à l'écriture?
    global name 'login' is not defined

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    from django.contrib.auth import login

  9. #9
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pip install django
    pip install django-private-views
    ....
    Je te conseille de suivre le tutorial officiel pour commencer avec django.

  10. #10
    Membre averti
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2012
    Messages : 34
    Par défaut
    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

  11. #11
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    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

  12. #12
    Membre averti
    Homme Profil pro
    berger
    Inscrit en
    Novembre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : berger

    Informations forums :
    Inscription : Novembre 2011
    Messages : 24
    Par défaut esce que virtualenv est le meme SVN
    salut a tous
    1/-es ce que le virtualenv est le le même svn
    2/- une autre question concernant django es ce que avec le cms django peut -on construire des applications web puissante comme les autres cms tel drupal ,joomla ou wordpress et merci d'avances

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Par défaut
    Bonjour,

    @Targui86 :

    Attention, Django n'est pas un CMS (mais un framework), tu auras beaucoup plus de boulot pour arriver à quelques choses de propre. Le CMS c'est si je ne m'abuses, plus de la gestion de contenu, très friendly user (hormis peut être Drupal) mais tu te rends vite compte des limites.

    Hors avec DJango, tu peux faire à peut prêt tout ce que tu veux tant bien que tu t'en donne le temps. Django te fournis un envirronement, mais derrière c'est à toi de tout faire (bien qu'il simplife pas mal de choses).

    En bref pour un blog je te conseillerais un CMS (Joomla ou WordPress) si tu souhaites ne pas te prendre la tête. Tu peux toujours le faire avec Django pour t'entrainer ou par curiosité, mais tu mettras plus de temps (comprendre le framework et appliquer tout sa).

  14. #14
    Membre averti
    Homme Profil pro
    berger
    Inscrit en
    Novembre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : berger

    Informations forums :
    Inscription : Novembre 2011
    Messages : 24
    Par défaut remerciement
    merci pour ta repense

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 66
    Par défaut sur le multi installation de django sous windows
    salut a tous frères
    d'apres vous qu'elle est la meilleur installation sous Windows certains nous guides comme notre camarade pacificator vers le vertualenv.py l'autre sous wsgi une autre installation directe apres la décompression du fichier django.rar
    une autre question si pouvait nous dictes l’avantage de chaque installation si possible
    et merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] securite avec les sessions.
    Par krapoulos dans le forum Langage
    Réponses: 7
    Dernier message: 05/11/2005, 14h41
  2. Problème avec les sessions
    Par philippef dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2005, 15h19
  3. [Sessions] Les sessions multi-applications
    Par brazza dans le forum Langage
    Réponses: 4
    Dernier message: 13/10/2005, 17h53
  4. les sessions PHP
    Par smh_master dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2005, 14h13
  5. PB Réseau sur les sessions ouvertes ?
    Par nico___23 dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2005, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo