• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

로그인 관련 질문

22.05.18 17:17 작성 조회수 141

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 메서드에서 인스턴스 변수를 참조하는 방식인거죠.

화이팅입니다. :-)