✅ Django에서 LOGIN_URL, LOGIN_REDIRECT_URL을 설정했는데, 왜 view에서 또 명시해야 할까?

2025. 5. 6. 19:33·기술블로그-Django편

✅ Django에서 LOGIN_URL, LOGIN_REDIRECT_URL을 설정했는데, 왜 view에서 또 명시해야 할까?

Django에서는 settings.py에 다음과 같은 인증 관련 설정을 자주 사용합니다:

LOGIN_REDIRECT_URL = '/'  # 로그인 성공 후 이동할 기본 경로
LOGOUT_REDIRECT_URL = '/'  # 로그아웃 후 이동할 기본 경로
LOGIN_URL = '/accounts/login/'  # 로그인 페이지 경로

그런데 이렇게 설정해두었는데도, 어떤 상황에서는 views.py에서 아래처럼 직접 작성해야 합니다:

return redirect(settings.LOGIN_URL)

왜 이렇게 두 번 설정해야 하는 걸까요? 아래에 정리해드릴게요 👇


1️⃣ 자동으로 참조되는 상황

Django는 내부적으로 특정 상황에서 settings.py의 설정값들을 자동으로 사용합니다.

설정 Django가 자동으로 사용하는 상황

LOGIN_URL @login_required 데코레이터나 LoginRequiredMixin 사용 시 로그인 안 했을 경우 자동 리디렉션
LOGIN_REDIRECT_URL 로그인 성공 후 next 파라미터가 없으면 자동 이동
LOGOUT_REDIRECT_URL 로그아웃 성공 후 자동 이동

예시:

from django.contrib.auth.decorators import login_required

@login_required
def dashboard(request):
    return HttpResponse("비밀 페이지")
  • 로그인 안 한 사용자가 접속하면 LOGIN_URL로 자동 이동합니다.

2️⃣ 직접 명시해야 하는 상황

반면, 다음과 같이 개발자가 주도적으로 리디렉션 흐름을 제어할 경우, settings.py의 값을 직접 가져와야 합니다:

from django.shortcuts import redirect
from django.conf import settings

def custom_register_view(request):
    # 회원가입 후 수동으로 로그인 페이지로 이동
    return redirect(settings.LOGIN_URL)

✅ 여기서는 Django가 자동으로 이동하지 않기 때문에 직접 redirect()와 settings.LOGIN_URL을 사용해줘야 합니다.


✅ 정리표: 자동 vs 직접

설정값 Django가 자동 사용하는 상황 직접 명시해야 하는 상황

LOGIN_URL 로그인 안 했을 때 @login_required가 감지함 로그인 페이지로 수동 이동할 때
LOGIN_REDIRECT_URL 로그인 성공 시 next 없을 경우 자동 이동 특정 페이지로 보내고 싶을 때 명시 필요
LOGOUT_REDIRECT_URL 로그아웃 후 자동 이동 다른 흐름 처리 시 명시 필요

✨ 결론

  • Django는 특정 상황에서 settings.py 설정을 자동 적용해줍니다.
  • 그러나 개발자가 흐름을 직접 제어할 때는 반드시 명시적으로 redirect() 호출해야 해요.

👉 그러니 settings 값만 설정하고 "왜 안 되지?" 헷갈릴 필요 없어요!

자동으로 처리해주는 케이스와 직접 처리해야 하는 케이스를 구분해서 쓰시면 됩니다 😊

'기술블로그-Django편' 카테고리의 다른 글

✅ Django 서버 실행 시 "That port is already in use" 에러 해결법 (포트 점유 강제 종료)  (0) 2025.05.06
✅ 왜 로그인은 자동인데, 회원가입은 우리가 직접 만들어야 할까?  (0) 2025.05.06
✅ Django에서 {% url 'login' %}이 가능한 이유 정리  (0) 2025.05.06
📝 한글 입숨(Hangul Ipsum)이란?  (0) 2025.05.06
✅ WSL에서 pyenv 가상환경을 PyCharm에 연결하는 방법  (0) 2025.05.06
'기술블로그-Django편' 카테고리의 다른 글
  • ✅ Django 서버 실행 시 "That port is already in use" 에러 해결법 (포트 점유 강제 종료)
  • ✅ 왜 로그인은 자동인데, 회원가입은 우리가 직접 만들어야 할까?
  • ✅ Django에서 {% url 'login' %}이 가능한 이유 정리
  • 📝 한글 입숨(Hangul Ipsum)이란?
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (657) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11) N
      • 특강 (34) N
      • 기술블로그 (36) N
      • 기술블로그-Fastapi편 (20) N
      • 기술블로그-Django편 (152) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
✅ Django에서 LOGIN_URL, LOGIN_REDIRECT_URL을 설정했는데, 왜 view에서 또 명시해야 할까?
상단으로

티스토리툴바