2024. 2. 14. 11:02ㆍdjango
`@method_decorator(ensure_csrf_cookie, name='dispatch')`는 Django 웹 프레임워크에서 클래스 기반 뷰(Class-Based View, CBV)에 데코레이터를 적용할 때 사용하는 구문입니다. 이 구문은 특정 메소드(예: `dispatch`)에 대해 지정된 데코레이터(`ensure_csrf_cookie`)를 적용하기 위해 사용됩니다. 여기서 `ensure_csrf_cookie` 데코레이터는 해당 뷰가 호출될 때마다 클라이언트에 CSRF 토큰 쿠키를 보장하여 설정하도록 합니다.
CSRF(Cross Site Request Forgery) 공격을 방지하기 위해, Django는 폼 제출과 같은 상태를 변경하는 POST 요청에 대해 CSRF 토큰을 검증합니다. `ensure_csrf_cookie` 데코레이터는 GET 요청과 같이 상태를 변경하지 않는 요청에서도 CSRF 쿠키를 강제로 설정하게 함으로써, 클라이언트 사이드에서 AJAX 요청을 보낼 때 CSRF 토큰을 쉽게 얻을 수 있도록 해줍니다.
예를 들어, 아래와 같이 클래스 기반 뷰에 이 구문을 사용할 수 있습니다:
```python
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.generic import View
@method_decorator(ensure_csrf_cookie, name='dispatch')
class MyView(View):
def get(self, request, *args, **kwargs):
# 여기에 GET 요청 처리 로직을 작성합니다.
pass
def post(self, request, *args, **kwargs):
# 여기에 POST 요청 처리 로직을 작성합니다.
pass
```
이 예제에서, `MyView` 클래스의 모든 요청(즉, `dispatch` 메소드를 통해 처리되는 모든 HTTP 메소드 요청)에 대해 `ensure_csrf_cookie` 데코레이터가 적용됩니다. 이는 이 뷰를 통해 처리되는 모든 요청이 클라이언트에 CSRF 쿠키를 설정하게 만듭니다, 이는 주로 클라이언트 사이드 JavaScript가 서버에 안전하게 AJAX 요청을 보낼 수 있도록 하기 위함입니다.
'django' 카테고리의 다른 글
Ubuntu 20.04에서 Python 3.11을 설치 및 Gunicorn 설정방법 (0) | 2024.11.27 |
---|---|
django에서 mssql 사용하기 (3) | 2024.11.06 |
sub_value_sum = {key: 0.0 for key in sub_values} 의 의미는 (0) | 2023.07.16 |
requirements.txt 파일은 (0) | 2023.05.15 |
Data가져오기 (0) | 2023.05.07 |