Je suis nouveau dans le système d'authentification de Django et je ne parviens pas à trouver la bonne méthode de débogage.
Je veux créer une fonction pour gérer les demandes de connexion et j'ai fait les étapes nécessaires pour le faire.
-
création d'un chemin pour l'url de connexion dans le fichier URLS.py du projet principal.
path('members/', include('django.contrib.auth.urls')), path('members/', include('members.urls')),
-
création d'une url de connexion dans l'application des membres qui pointe vers une fonction créée dans views.py
urlpatterns = [ path('login/', views.login_user, name='login'),]
-
défini ce qu'il faut faire lorsque l'utilisateur arrive sur une url spécifique
def login_user(request): if request.method == 'POST': print('-'*100) username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) messages.success(request, ("You are now logged in")) return redirect('index') else: messages.success(request, ("Invalid credentials")) return redirect('login') return render(request, 'registration/Login.html')
-
J'ai créé une page de connexion dans le dossier des modèles.
{% extends 'Base.html'%} {% block title %} Login to the Blog Page {% endblock %} {% block content%} <h1>Members Login</h1> <div class="form-group"> <form method="POST" action=""> {% csrf_token %} <div class="mb-3"> <label for="exampleInputEmail1" class="form-label">User Name</label> <input type="text" class="form-control" name = "username"> <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div> </div> <div class="mb-3"> <label for="exampleInputPassword1" class="form-label">Password</label> <input type="password" class="form-control" name="password"> </div> <button type="submit" class="btn btn-primary">Login</button> </form> <br> </div> {% endblock %}
Maintenant, lorsque j'arrive à /members/login après avoir soumis les détails de l'utilisateur, l'instruction print de la méthode post n'est pas imprimée dans la console. Je soupçonne donc que la requête post n'est pas redirigée vers la fonction login_user. Quelqu'un peut-il m'aider à identifier la raison ?