✅ Django에서 LOGIN_URL이란?
로그인 관련 기능을 구현할 때, 단순히 URL만 지정해서는 동작하지 않습니다. Django 내부 인증 로직에 맞춰 settings.py에 명시적으로 경로를 설정해야 자동 리다이렉션이 제대로 작동해요.
📌 1. LOGIN_URL의 역할
# settings.py
LOGIN_URL = '/login/'
- 로그인하지 않은 사용자가 인증이 필요한 페이지에 접근할 경우, Django는 LOGIN_URL에 설정된 경로로 자동 리다이렉션합니다.
- 해당 경로를 설정하지 않으면 기본적으로 /accounts/login/을 참조하려고 하기 때문에 ❗ 404 오류가 발생할 수 있어요.
📎 2. 실전 예시 코드
# views.py
from django.contrib.auth.decorators import login_required
@login_required
def mypage(request):
return render(request, 'user/mypage.html')
- 이 경우, 로그인을 하지 않은 사용자가 /mypage/에 접근하면?
→ 자동으로 settings.LOGIN_URL 경로로 이동하게 됩니다!
# settings.py
LOGIN_URL = '/login/'
- 위 설정이 없으면 기본 경로인 /accounts/login/으로 가기 때문에 직접 만든 로그인 페이지로 보내고 싶다면 꼭 명시해줘야 합니다.
🆚 path()와 LOGIN_URL의 차이점 정리
항목 역할
path('login/', LoginView.as_view(), name='login') | 사용자가 브라우저에서 /login/으로 접근할 수 있게 라우팅 설정 |
LOGIN_URL = '/login/' | 인증 필요 뷰에서 리다이렉션될 내부 설정 경로 지정 |
✔️ 둘 다 있어야 @login_required나 LoginRequiredMixin이 정상 동작해요!
🔒 관련 설정값 3종 정리
설정값 설명
LOGIN_URL | 인증되지 않은 사용자가 리다이렉션될 로그인 URL |
LOGIN_REDIRECT_URL | 로그인 완료 후 이동할 기본 URL |
LOGOUT_REDIRECT_URL | 로그아웃 후 이동할 URL |
💡 예:
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/mypage/'
LOGOUT_REDIRECT_URL = '/'
💥 흔한 실수와 주의사항
❌ @login_required만 쓰고 LOGIN_URL을 설정하지 않음
- → 로그인 페이지로 리다이렉트되지 않고 404 에러 발생 가능
❌ path('login/', ...)만 정의하고 LOGIN_URL은 생략함
- → 내부 인증 리다이렉션 로직에서 accounts/login/으로 빠짐
✅ 해결법: 둘 다 반드시 명시해주기
💡 실무 꿀팁 요약
- LOGIN_URL은 내부 인증 흐름에 쓰이는 기본 경로 설정입니다.
- urls.py는 외부에서 들어오는 요청 처리를 위한 라우터 역할이에요.
- 실전에서는 로그인 페이지 커스터마이징 시, 항상 LOGIN_URL도 함께 설정해야 안정적으로 동작합니다.
🎯 최종 요약
- LOGIN_URL은 Django 내부 인증 리다이렉션 경로입니다.
- @login_required, LoginRequiredMixin 사용 시 필수로 지정해야 함
- 로그인 경로와 내부 설정 경로는 각각 따로 지정하되 일치하도록 구성해야 함
# settings.py
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/dashboard/'
# urls.py
path('login/', LoginView.as_view(), name='login')
🔁 두 개가 함께 맞물려야 인증 흐름이 완성됩니다!
'기술블로그-Django편' 카테고리의 다른 글
📡 클라이언트-서버 요청/응답 흐름 완전 정리 (0) | 2025.05.14 |
---|---|
🔗 HTTP 메서드 + URL + request body 구조 정보 정리 (REST API 기반) (0) | 2025.05.14 |
✅ Django SECRET_KEY를 안전하게 설정하는 방법 (0) | 2025.05.13 |
✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명 (0) | 2025.05.13 |
🔐 Django 비밀번호 암호화와 검증 완전 정리 (0) | 2025.05.13 |