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 gérer session


Sujet :

Django Python

  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut django gérer session
    Bonjour donc voila tous est dans le titre je voudrais faire une partie ou l'utilisateur ce connecte et que sa verifie avec la base de donne si l'utilisateur et le mot de passe son correcte merci d'avance voici ma vu pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def login(request):
     
        if request.method == 'POST':
            username = request.POST['username']
            password = request.POST['password']
     
            user = auth.authenticate(username=username, password=password)
            if user is not None and user.is_active:
                 auth.login(request, user)
            # Redirect to a success page.
            #return HttpResponseRedirect("/account/loggedin/")
            return  render_to_response('flatpages/main_page.html')
        else:
            return render_to_response("flatpages/main_page.html")

  2. #2
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Voici mon code :

    fichier views:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def login(request):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return  render_to_response('flatpages/index.html')
            else:
                print "Your account has been disabled!"
        else:
            print "Your username and password were incorrect."


    fichier urls:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    urlpatterns += patterns('',
                             (r'^accounts/login/$',  login),
                             (r'^accounts/logout/$', logout),
                             )

    et mon template :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <form method="post" action="">
     
    	<label for="username">User name :</label>
    	<input type="text" name="username" id="username"  /><br/>
     
    	<label for="password"><span>Password :</span></label>
    	<input type="password" name="password" id="password" />
     
    	 <input type="submit" value="connect" />
        <input type="hidden" name="next" value="{{ next|escape }}" />

    Et voici l'erreur que j'ai seulement je ne sais pas pourquoi, merci d'avance pour votre aide.

    Edit:

    Et mon settings.py :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TEMPLATE_DIRS = (
        '/home/damien/django/damien_project/Organisations/templates'
        '/home/damien/django/damien_project/auth/templates'

    Mais sa ne fait rien alors je vois pas trop ce que je n'est pas compris, oui le tuto sa fait deux jours que je suis dessus mais je n'arrive toujours pas c'est pour cela que je demande un peu d'aide et merci d'avance.

  3. #3
    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,


    Tu t'es un peu melangé les méthodes d'authentification:
    Tu définis dans tes urls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    urlpatterns += patterns(
                             (r'^accounts/login/$', 'django.contrib.auth.views.login'),
                             )
    donc l'url http://monsite.org/accounts/login/ appellera la vue django.contrib.auth.views.login.
    Cette vue est définie par l'application d'authentification, tu n'as pas à la créer dans ton views.py.
    Il te suffit de créer un template /registration/login.html et c'est tout

    je te conseille de (re)lire la doc de django sur l'authentification., dans la section the-login-required-decorator, l'explication de la vue views.login (et la suite views.logout, ...).

    Si tu as encore des soucis poste tes erreurs et ta version de Django, merci.

    @+.

  4. #4
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Mais je me demande si il prend en compte ma vue sachant que j'ai deux applications comment fait t'il pour si retrouve au niveau du template ?
    Car avec ce que j'ai fait au click connect rien ne ce passe.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Damien, je crois que tu te casses la tête pour rien.
    regarde la doc sur les décorators que t'a indiquée Pacificator. C'est une simple ligne à ajouter au dessus de ta view.

    Django se débrouille avec les templates à conditions que tu les aies mis dans le répertoire adéquat, indiqués dans la view et définis dans les settings.

    Et si ça bugge, django t'indique tous les paths dans lesquels il a regardé.

  6. #6
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Tu parle de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from django.contrib.auth.decorators import login_required
    Pour ce qui est du tutorial sa fait deux jours que je le lit c'est que je doit vraiment etre nul.

    Ce que je ne comprend pas c'est my_view dans le tuto elle sert a quoi vu qu'elle n'est pas appelle.

    Desoler de vous embeter mais cette partie la je ne la comprend pas pourtant j'ai deja fait de nombreuse chose avec django et d'ailleur si quelq'un a deja utilise geodjango je veut bien qu'il me le dise car j'aurais egalement quelque question.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Le principe c'est qu'une ligne de l'urls.py pointe vers une view.
    Si tu veux que cette view ne soit accessible qu'aux utilisateurs loggués, tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @login_required
    def une_view(request):
        tout plein de code
    Pour geodjango, je ne suis pas suffisamment compétent.

  8. #8
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    D'accord donc comme sa par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    from django.contrib.auth.decorators import login_required
     
    @login_required    
    def Organisations(request):
        #...
        form_1 = OrganisationForm()
        form_2 = AddressForm()
    #..................
    Mais pour faire interagir avec le formulaire ?

  9. #9
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Et du coup cette vue ne sert pas juste pour authentification si j'ai bien suivit django le fait tous seul :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def login(request):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            if user.is_active:
                login(request, user)
                return  render_to_response('flatpages/index.html')
            else:
                print "Your account has been disabled!"
        else:
            print "Your username and password were incorrect."

  10. #10
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Je pose une autres petite question au passage je n'arrive pas a utiliser le css avec django voici ma config :

    sittings.py:


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    import sys, os.path
     
    # url du projet
    HERE_URL = 'http://127.0.0.1:8000'
    PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
     
    DEBUG = True
    TEMPLATE_DEBUG = DEBUG
     
    ADMINS = (
        # ('Your Name', 'your_email@domain.com'),
    )
     
    MANAGERS = ADMINS
     
    # Absolute path to the directory that holds media.
    # Example: "/home/media/media.lawrence.com/"
    MEDIA_ROOT = '%s/media/' % PROJECT_PATH
     
     
    # URL that handles the media served from MEDIA_ROOT. Make sure to use a
    # trailing slash if there is a path component (optional in other cases).
    # Examples: "http://media.lawrence.com", "http://example.com/media/"
    MEDIA_URL = '%s/media/' % HERE_URL
    #STATIC_DOC_ROOT = '/media/images'
     
    TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.request",
     
    # pour avoir MEDIA_URL dans les templates
    "django.core.context_processors.media",
    )
     
    # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
    # trailing slash.
    # Examples: "http://foo.com/media/", "/media/".
    ADMIN_MEDIA_PREFIX = '/admin-media/'

    urls.py:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    urlpatterns = patterns('',
                           #SNIP - urls du projet ici
                           'http://127.0.0.1:8000'
                           )
     
     
     
    if settings.DEBUG:
        urlpatterns += patterns('',
                           # static stuff
                           (r'^media/(?P {'document_root': settings.MEDIA_ROOT}),
                            )

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    En développement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (r'^media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': '/vers/dossier/media'}),
    avec: MEDIA_URL="/media/' dans les settings

    En prod, tu retires tout ça et tu laisses faire ton serveur (Apache par ex)

  12. #12
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Merci ca fonctionne tres bien par contre les sessions toujours pas !!!

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Pour les sessions, tu n'as pas besoin de redéfinir la view. Le decorator suffit, c'est l'intérêt de pouvoir limiter l'accès à n'importe quelle view que tu crées.

  14. #14
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    D'accord donc normalement avec le code que je t'est montre en dernie ca devrais fonctionner ?



    Edit a oui si quelqu'un a deja installe postgis car je n'y arrive pas en faite .

  15. #15
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Par défaut
    Bonjour
    J'ai encore essaye mais sa ne fonctionne toujours pas si quelqu'un a une configuration qui fonctionne je veux bien y jeter un petit coup d'oeil.

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

Discussions similaires

  1. Gérer Session ISAPI en Delphi
    Par vin100H dans le forum Web & réseau
    Réponses: 1
    Dernier message: 06/08/2012, 10h56
  2. gérer une variable de session
    Par sami_c dans le forum ASP
    Réponses: 5
    Dernier message: 12/07/2006, 14h36
  3. Réponses: 0
    Dernier message: 15/06/2006, 07h41
  4. Gérer les sessions avec PEAR
    Par manaboko dans le forum Langage
    Réponses: 1
    Dernier message: 08/05/2006, 14h50
  5. Réponses: 3
    Dernier message: 27/04/2006, 11h37

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