view
웹 애플리케이션에서 요청을 처리하고
적절한 응답을 반환하는 Python 함수나 클래스
요청을 받아 데이터 처리, 템플릿 렌더링 등을 수행하여
클라이언트에게 보여줄 결과를 생성
URLconf
Django 애플리케이션에서
URL을 처리하는 방식을 정의하는 중요한 구성 요소
URLconf는 URL 패턴과 뷰를 매핑시켜주는 역할을 함
각 URL 패턴은 특정한 뷰 함수나 클래스를 가리키며,
요청이 들어왔을 때 해당하는 뷰를 호출하도록 지정함
URL 패턴
클라이언트 요청에 대한 경로를 정의하고,
해당 경로에 연결된 뷰를 지정하는 매핑 규칙임
URL 패턴은 URLconf 파일에 정의되며,
요청된 URL과 일치하는 패턴을 찾아
해당하는 뷰 함수나 클래스로 연결됨
가장 간단한 Django의 URLconf 파일 예시
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello_world, name='hello_world'),
]
이 예시에서는 /hello/ 경로에 대한 요청을
hello_world 뷰 함수로 매핑하고 있음
함수 기반 뷰(Function-Based Views, FBVs)
함수로 작성된 뷰
간단한 요청을 처리할 때 주로 사용,
함수 형태로 URL 패턴과 직접 매핑됨
클래스 기반 뷰(Class-Based Views, CBVs)
클래스로 작성된 뷰
재사용성과 확장성이 뛰어나며,
Django에서 제공하는 여러 기능과 메서드를 상속하여 사용할 수 있음
클래스 기반 뷰는 보다 복잡한 요청을 처리하고
더 많은 기능을 제공할 때 유용
Django의 ListView에서 get_context_data 함수
템플릿에 전달될 컨텍스트 데이터를 추가하거나 수정하는 역할
이 함수를 재정의하여
템플릿에서 사용할 데이터를 커스터마이즈하거나 추가할 수 있음
일반적으로 get_context_data 메서드는
기본적으로 필요한 컨텍스트 데이터를 설정한 후,
추가적인 컨텍스트 데이터를 포함하여 반환
django.urls.reverse_lazy 함수
URL 패턴의 이름을 기반으로
URL을 동적으로 생성하는 Django의 유틸리티 함수
reverse_lazy를 사용하면
URL 패턴의 이름을 직접 지정하여 URL을 생성할 수 있으며,
이 과정은 런타임 시에 Lazy로 평가되므로
메모리를 효율적으로 사용할 수 있음
특히, URL이 포함된 뷰나 모델 클래스에서 사용될 때 유용
Django의 DeleteView
데이터베이스에서 특정 객체를 삭제하기 위한 뷰 클래스
이를 통해 사용자는 웹 애플리케이션에서 객체를 삭제할 수 있음
DeleteView는 기본적으로 삭제할 객체를 식별하기 위해
URL 매개변수를 사용하고,
삭제 작업이 완료되면 지정된 성공 URL로 리디렉션됨
사용자가 삭제를 확인하기 위해 확인 페이지를 제공하고,
삭제 동작은 POST 요청을 통해 이뤄짐
Django에서 POST와 GET
Django에서 POST와 GET은 HTTP 요청 메서드로,
웹 애플리케이션에서 클라이언트와 서버 간의 데이터를 주고받는 데 사용됨
가장 큰 차이점
GET 요청
데이터를 URL의 쿼리 문자열에 첨부하여 전송
주로 데이터의 검색이나 조회를 위해 사용됨
데이터가 URL에 노출되므로
보안적으로 취약할 수 있음
캐시 가능하며, 브라우저 히스토리에 저장됨
길이 제한이 있으므로
대용량 데이터 전송에 적합하지 않음
POST 요청
HTTP 요청 본문에 데이터를 담아서 전송
주로 데이터를 서버에 제출하고,
변경이나 생성을 위해 사용됨
데이터가 URL에 노출되지 않으므로 비교적 보안적
캐시되지 않으며,
브라우저 히스토리에 저장되지 않음
길이 제한이 없어 대용량 데이터 전송에 적합
즉, GET은 주로 데이터의 검색과 조회에,
POST는 데이터의 제출과 변경에 사용됨
보안, 캐싱, 데이터 크기 등의 차이가 있으므로
적절한 상황에서 사용해야 함
"캐시되지 않는다"는 것
웹 브라우저가 해당 요청의 응답을
로컬 캐시에 저장하지 않는다는 것을 의미
이는 웹 브라우저가 같은 요청을 다시 보낼 때
매번 서버로부터 새로운 응답을 받아야 한다는 것을 의미
"브라우저 히스토리에 저장되지 않는다"는 것
해당 요청이 브라우저의 방문 기록에 기록되지 않는다는 것을 의미
즉, 사용자의 브라우저 히스토리에는
해당 요청이 포함되지 않으며,
사용자는 뒤로가기 버튼을 클릭하여
이전 페이지로 돌아갈 수 없음
이 둘의 주요 차이점
캐시되지 않는다
웹 브라우저가 요청의 응답을 로컬 캐시에 저장하지 않는다.
브라우저 히스토리에 저장되지 않는다
요청이 브라우저의 방문 기록에 기록되지 않는다.
둘 다 요청 및 응답의 처리 방식과 관련이 있지만,
캐시와 히스토리는 서로 다른 기능을 가지고 있음
히스토리는 요청
캐시는 요청에 대한 응답