[장고] CSRF 오류 발생 시 특정 페이지로 리다이렉트하기

소요 시간: 5분

Django에서 CSRF 오류가 발생했을 때 사용자를 특정 페이지로 리다이렉트하는 방법을 설정할 수 있습니다. 이를 위해 settings.py 파일과 커스텀 CSRF 실패 뷰를 수정하면 됩니다.


1. settings.py 설정

먼저 settings.py 파일에 CSRF 실패 핸들러와 리다이렉트할 URL을 설정합니다.

# settings.py
CSRF_FAILURE_VIEW = 'myapp.views.csrf_failure'
CSRF_FAILURE_REDIRECT_URL = '/'  # 홈 페이지로 리다이렉트. 원하는 URL로 변경 가능


2. 커스텀 CSRF 실패 뷰 작성

다음으로, views.py 파일에 CSRF 실패 핸들러를 작성합니다. 이 뷰는 CSRF 오류가 발생했을 때 사용자를 설정된 URL로 리다이렉트합니다.

# myapp/views.py
from django.shortcuts import redirect
from django.conf import settings

def csrf_failure(request, reason="", template_name="403_csrf.html"):
    # 리다이렉트할 URL 설정
    redirect_url = getattr(settings, 'CSRF_FAILURE_REDIRECT_URL', '/')
    return redirect(redirect_url)


3. 설정 파일에 리다이렉트 URL 추가 (선택 사항)

리다이렉트할 URL을 설정 파일에 추가함으로써, URL을 쉽게 관리할 수 있습니다. 이미 앞서 설정한 CSRF_FAILURE_REDIRECT_URL을 사용합니다.

# settings.py
CSRF_FAILURE_REDIRECT_URL = '/'  # 원하는 URL로 변경 가능
CSRF_FAILURE_VIEW = 'myapp.views.csrf_failure'

이 설정을 통해 CSRF 오류가 발생했을 때 사용자를 지정한 URL로 리다이렉트할 수 있습니다. 예를 들어, 로그인 페이지나 특정 오류 페이지로 리다이렉트하고 싶다면 해당 URL을 CSRF_FAILURE_REDIRECT_URL에 지정하면 됩니다.


이제 Django 프로젝트에서 CSRF 오류가 발생할 때 사용자가 설정된 URL로 리다이렉트되도록 설정이 완료되었습니다.

장고 리스트