[장고] CSRF 오류 발생 시 특정 페이지로 리다이렉트하기
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로 리다이렉트되도록 설정이 완료되었습니다.