로그인 실패 시 오류 정보를 Django에 표시합니다.

6000 단어 DjangoPython
Django:1.10
Django가 준비한 인증 시스템에 로그인에 실패했을 때의 오류 정보를 표시하고 싶습니다.
보아하니 Form의 add_error를 쓰면 돼요.
The Forms API | Django documentation | Django
https://docs.djangoproject.com/en/1.10/ref/forms/api/#django.forms.Form.add_error
준비
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())
view에서 form 중 add_error
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_ID、またはPASSWORDが違います。')
    return render(request, 'polls/login.html', {'form': form})
템플릿에 오류 메시지를 표시하기만 하면 됩니다.
(add_error의 첫 번째 매개변수를 NONE로 설정하여 non_field_errors에서 가져옴)
login.html
・・・
{% for error in form.non_field_errors %}
    <p>{{ error }}</p>
{% endfor %}
・・・
이렇게 표시됩니다.

좋은 웹페이지 즐겨찾기