✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지?

2025. 5. 13. 21:38·기술블로그-Django편

✅ 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
'기술블로그-Django편' 카테고리의 다른 글
  • 📡 클라이언트-서버 요청/응답 흐름 완전 정리
  • 🔗 HTTP 메서드 + URL + request body 구조 정보 정리 (REST API 기반)
  • ✅ Django SECRET_KEY를 안전하게 설정하는 방법
  • ✅ Django Form 필드 접근 완전 이해하기 - 비유로 풀어보는 설명
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    chinanightlife
    RM
    smartphonedurability
    remittance
    bts
    titaniumcase
    btsjungkook
    lawsuitculture
    뷔
    btsdischarge
    homebartrend
    travel ban
    newpoliticalparty
    chatgpterror
    trumpmuskclash
    basalcellcarcinoma
    americanlaw
    college reunions
    gpterror
    hotcoffeecase
    classaction
    livebroadcast
    btscomeback
    urbantrends
    life reflection
    self-growth
    btsreunion
    global politics
    americaparty
    youngprofessionals
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
✅ Django에서 LOGIN_URL이란? Settings 에 왜 넣는지?
상단으로

티스토리툴바