Bonsoir à vous, j'essaye d'utiliser l'authentification de django, j'arrive à deux cas de figures, soit la connexion marche et pas la déconnexion, soit c'est l'inverse. Je passe de l'un à l'autre en changeant une ligne dans urls.py, donc je me dis que le problème vient sûrement de la et qu'aucune de mes deux méthodes soient corrects. Je vous mets ce que je pense utile.

Après avoir cherché c'est un problème de redirection, la redirection se fait sur localhost alors qu'elle devrait se faire sur localhost/connexion, si quelqu'un a déja eu ce problème son aide est la bienvenue.

Merci beaucoup pour votre temps.

views.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
 from django.contrib.auth import authenticate, login, logout
from django import forms
from .forms import ConnexionForm
from django.shortcuts import render, redirect
from django.urls import reverse
 
 
def connexion(request):
    error = False
 
    if request.method == "POST":
        form = ConnexionForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            user = authenticate(username=username, password=password)
            if user:  
                login(request, user)  
            else: 
                error = True
    else:
        form = ConnexionForm()
 
    return render(request, 'connexion.html', locals())
 
def deconnexion(request):
    logout(request)
    return redirect(reverse(connexion))
models.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 from django.contrib.auth.models import User
from django.db import models
 
class Profil(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)  # La liaison OneToOne vers le modèle User
    site_web = models.URLField(blank=True)
    avatar = models.ImageField(null=True, blank=True, upload_to="avatars/")
    signature = models.TextField(blank=True)
    inscrit_newsletter = models.BooleanField(default=False)
 
    def __str__(self):
        return "Profil de {0}".format(self.user.username)
Et les deux urls.py:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 # Dans le fichier urls.py de notre application auth
from django.conf.urls import url
from . import views
 
urlpatterns = [
 
    url(r'^connexion$', views.connexion, name='connexion'),
    url(r'^deconnexion$', views.deconnexion, name='deconnexion')
]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 # Dans le fichier urls.py de notre application auth
from django.conf.urls import url
from . import views
 
urlpatterns = [
    url('', views.connexion, name='connexion'),
    url(r'^connexion$', views.connexion, name='connexion'),
    url(r'^deconnexion$', views.deconnexion, name='deconnexion')
]