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
models.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))
Et les deux urls.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)
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') ]
Partager