작성
·
207
1
1. 현재 장고의 LoginView를 이용하여 로그인 처리를 하고 있습니다. 그러다 보니,
저의 의도: 위와 같이 '서울시청'에 속한 아이디만 로그인
실제: 다른 시청에 속해도 로그인 되고 있습니다.
따라서 저는 LoginView에서 사용하는 AuthenticationForm을 상속 받아 사용하려 합니다.
# forms.py
from django.contrib.auth.forms import AuthenticationForm
class CustomAuthenticationForm(AuthenticationForm):
error_messages = {
"invalid_login": (
"아이디나 비밀번호가 올바르지 않습니다. 다시 확인해 주세요."
),
"inactive": ("이 계정은 인증되지 않았습니다. 인증을 먼저 진행해 주세요."),
}
def __init__(self, request=None, *args, **kwargs):
super(CustomAuthenticationForm, self).__init__(*args, **kwargs)
self.fields['username'].label = '아이디'
self.fields['password'].label = '비밀번호'
def clean(self):
username = self.cleaned_data.get("username")
password = self.cleaned_data.get("password")
from test1.models import UserInfo
if UserInfo.objects.filter(agency_name=): # 이 부분
이때, 위에서 받은 '서울시청'을 가져와서 위 코드의 마지막 부분에 넣으려 합니다. 위 form에서 저기 있는 서울시청을 어떻게 가져올 수 있나요?
답변 1
1
안녕하세요.
상황에 따라 다양한 방법이 있을 수 있겠지만, 간단하게는 뷰에서 CustomAuthenticationForm 인스턴스 생성하실 때, 생성자 인자로 지정해보실 수도 있겠습니다. 생성자 인자로 전달받아서 인스턴스 변수로 저장한 후에 clean 메서드에서 인스턴스 변수를 참조하는 방식인거죠.
화이팅입니다. :-)