[PYTHON] Afficher un message d'erreur lorsque la connexion échoue dans Django

Django:1.10

Je souhaite afficher un message d'erreur lorsque la connexion échoue avec le système d'authentification fourni par Django.

Apparemment, vous pouvez utiliser add_error de Form.

The Forms API | Django documentation | Django https://docs.djangoproject.com/en/1.10/ref/forms/api/#django.forms.Form.add_error

Préparez un formulaire,

forms.py


from django import forms

class LoginForm(forms.Form):
    username = forms.CharField(label='LOGIN_ID', max_length=30)
    password = forms.CharField(
            label='PASSWORD', max_length=128, widget=forms.PasswordInput())

Add_error au formulaire dans la vue

views.py


from django.contrib.auth import authenticate, login
from django.shortcuts import get_object_or_404, redirect, render

from .forms import LoginForm

def user_login(request):
    form = LoginForm()
    return render(request, 'polls/login.html', {'form': form})

def authentication(request):
    form = LoginForm(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:
            if user.is_active:
                login(request, user)
                return redirect('polls:index')
    form.add_error(None, 'LOGIN_L'ID ou le MOT DE PASSE est différent.')
    return render(request, 'polls/login.html', {'form': form})

Faites simplement afficher un message d'erreur au modèle. (Comme le premier argument de add_error est NONE, il est obtenu à partir de non_field_errors)

login.html


・ ・ ・
{% for error in form.non_field_errors %}
    <p>{{ error }}</p>
{% endfor %}
・ ・ ・

C'était affiché comme ça.

無題.png

Recommended Posts

Afficher un message d'erreur lorsque la connexion échoue dans Django
[Django] Erreur lorsque SlugField est spécifié dans .filter ()
[Jjango] Afficher le message d'erreur spécifié par lever ValidationError
Lorsqu'une erreur _sqlite3 se produit dans la couverture
Implémentation de la fonction de connexion dans Django
[Django] Afficher un message à la destination de la redirection
Lorsque base.html ne peut pas être appelé dans Django
Comment supprimer l'erreur d'affichage dans matplotlib
Django ~ Affichons-le sur le navigateur ~
[Django] Erreur rencontrée lors du déploiement de heroku (2)
[Django] Erreur de version de sqlite lors de l'exécution de python manage.py dans l'environnement aws cloud9
Erreur d'autorisation lors de la lecture du fichier de téléchargement Django
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Quand j'obtiens une erreur de pilote chrome dans Selenium
Dans Django, affichez les résultats des lots (commandes) de manière séquentielle en HTML
Passer les informations de connexion à afficher dans Django
Implémenter la fonctionnalité de connexion JWT dans le framework Django REST
Erreur lors de la tentative d'installation de psycopg2 en Python
Lors de l'accès à partir d'Andorid Chrome, la vérification Django CSRF échoue ou vous ne pouvez pas vous connecter.
Modèle dans Django
Erreur dans random.shuffle
Erreur dans Pyinstaller
Je souhaite envoyer un message d'erreur en japonais avec le formulaire de changement de mot de passe django
L'affichage d'erreur (import'hoge non résolu) lors de l'importation d'un module personnalisé ne disparaît pas dans VS Code
Erreur dans TensorBoard
Formulaire à Django
Lorsque "Message: session non créée" se produit dans Python + Selenium
J'obtiens une erreur lorsque je mets opencv dans pyautoGUI
Lorsqu'une erreur se produit dans le scraping python (requêtes)
Lorsque "ERREUR: HTTP n'est pas pris en charge." S'affiche dans mpsyt
Explication sur l'erreur NoReverseMatch dans "python django super introduction"