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

Python Discussion :

Authentification avec Django


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 44
    Par défaut Authentification avec Django
    Bonjour à tous !

    J'ai fait une fonction afin que les utilisateurs puissent se connecter mais elle ne fonctionne pas, elle agit comme une fonction de création de compte et donc quand j'essaie de me connecter, j'ai l'erreur "Un objet User avec ce champ Username existe déjà." Voici les fonctions en question :
    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
    41
    42
    43
    44
    45
    46
    from django.shortcuts import render, redirect
    from .forms import UserSignUpForm, ParagraphErrorList, UserSignInForm
    from django.contrib import messages
    from .models import User
    from django.contrib.auth import authenticate, login
     
     
    def signup(request):
        if request.method == 'POST':
            form = UserSignUpForm(request.POST, error_class=ParagraphErrorList)
            if form.is_valid():
                email = form.cleaned_data['email']
                username = form.cleaned_data['username']
                password = form.cleaned_data['password']
     
                user = User.objects.filter(email=email, username=username)
                if not user.exists():
                    user = User.objects.create(
                        email=email,
                        username=username,
                        password=enc_password
                    )
                messages.success(request, 'Votre compte a bien été créé, vous pouvez vous connecter !')
                return redirect('/signin/')
        else:
            form = UserSignUpForm()
        return render(request, 'store/signup.html', {'form': form})
     
     
    def signin(request):
        if request.method == "POST":
            form = UserSignInForm(request.POST)
            if form.is_valid():
                username = form.cleaned_data['username']
                password = form.cleaned_data['password']
     
                user = authenticate(username=username, password=password)
     
                if user is not None:
                    login(request, user)
                    return redirect('home')
                else:
                    messages.info(request, "Le nom d'utilisateur ou le mot de passe est incorrect.")
        else:
            form = UserSignInForm()
        return render(request, 'store/signin.html', {'form': form})
    La fonction de création de compte fonctionne parfaitement mais je ne vois pas pourquoi celle de connexion ne fonctionne pas. Est-ce qu'il y a une erreur quelque part ?

    Merci à tous pour votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    elle agit comme une fonction de création de compte et donc quand j'essaie de me connecter, j'ai l'erreur "Un objet User avec ce champ Username existe déjà.
    Est-ce que vous faites appel à la bonne fonction lors de cette connexion ? J'ai comme l'impression que lorsque vous cliquez sur le bouton de connexion, cela fait appel à la fonction de création de compte, et vu que cet utilisateur existe déjà, cela vous affiche ce message d'erreur.
    Essayez donc de voir dans vos templates, urls, etc. si tout est bon

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2020
    Messages : 44
    Par défaut
    J'ai envisagé cette possibilité mais je ne pense pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    urlpatterns = [
        url(r'^$', views.index, name='home'),
        url(r'^store/', include(('store.urls', 'store'), namespace='store')),
        url(r'^signup/', views.signup, name='signup'),
        url(r'^signin/', views.signin, name='signin'),
        url(r'^myaccount/', views.myaccount, name='myaccount'),
        url(r'^logout/', views.logout, name='logout'),
        url(r'^admin/', admin.site.urls),
    ]
    Dans les vues, je fais bien appel à la vue signin. Peut-être est-ce parce que je n'utilise pas l'attribut action dans les balises form de mes fichiers signup.html et signin.html ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    La paramètre "action" indique la page où les données doivent être traitées après soumission du formulaire. Dans certains cas, même s'il n'est pas précisé, ça ne pose pas de problème. Néanmoins, il est recommandé de le préciser même si aucune page n'y est indiquée comme dans cet exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="" method="POST">
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="." method="POST">
    qui indiquent la page courante. En django, je ne sais pas si ça pose problème s'il n'est pas précisé.

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

Discussions similaires

  1. Page d'authentification avec jsp
    Par taroudant dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 19/07/2006, 09h24
  2. prob d'authentification avec Java Script !!!!!
    Par King_T dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/05/2006, 19h18
  3. Réponses: 2
    Dernier message: 10/05/2006, 07h50
  4. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40
  5. [MySQL] mécanisme d'authentification avec BD
    Par lalyly dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2005, 13h26

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