Django 기본 CBV API (Base views)
2022. 1. 9. 22:15ㆍ강의 정리/Django Views
반응형
장고(Django)를 배우기 시작한 입문자이시거나, 또는 배우고 싶은 생각이 있으신 분은 위 출처의 강의를 적극 추천드립니다!!!
Built-in CBV API
- Base views # View, TemplateView, RedirectView
- Generic display views # DetailView, ListView
- Generic date views # ArchiveIndexView, YearArchiveView, WeekArchiveView, DayArchiveView, TodayArchiveView, DateDetailView
- Generic editing views # FormView, CreateView, UpdateView, DeleteView
https://docs.djangoproject.com/ko/4.0/ref/class-based-views/
# 실제 웹 api를 만들 때에는 Django restframework를 사용하게된다. 그럼에도 불구하고 CBV를 알아야 하는 이유는 Django restframework에도 CBV의 개념이 포함되어있기 때문이다.
View
- 모든 CBV의 모체 # 이 CBV를 직접 쓸 일은 거의 X
- http method별로 지정 이름의 멤버 함수를 호출토록 구현 # GET 요청이 오면, 실제 소문자 get 멤버 함수를 호출
- # request.method.lower() 이름의 멤버함수를 호출 POST -> post 멤버함수, GET -> get 멤버 함수
https://docs.djangoproject.com/ko/4.0/ref/class-based-views/base/#templateview
제네릭 뷰
뷰 개발 과정에서 공통적으로 사용할 수 있는 기능들을 추상화하고, 장고에서 기본적으로 제공해주는 클래스형 뷰이다.
Django 의 제네릭 뷰
Django 에서 제공하는 제네릭 뷰는 다음과 같이 4가지로 분류할 수 있다.
- Base View: 뷰 클래스를 생성하고, 다른 제네릭 뷰의 부모 클래스를 제공하는 기본 제네릭 뷰
- Generic Display View: 객체의 리스트를 보여주거나, 특정 객체의 상세 정보를 보여준다.
- Generic Edit View: 폼을 통해 객체를 생성, 수정, 삭제하는 기능을 제공한다.
- Generic Date View: 날짜 기반 객체의 년/월/일 페이지로 구분해서 보여준다.
아래는 위 4가지 분류에 따른 구체 뷰 클래스에 대한 설명을 보여준다.
- Base View
- View: 가장 기본이 되는 최상위 제네릭 뷰
- TemplateView: 템플릿이 주어지면 해당 템플릿을 렌더링한다.
- RedirectView: URL이 주어지면 해당 URL로 리다이렉트 시켜준다.
- Generic Display View
- DetailView: 객체 하나에 대한 상세한 정보를 보여준다.
- ListView: 조건에 맞는 여러 개의 객체를 보여준다.
- Generic Edit View
- FormView: 폼이 주어지면 해당 폼을 보여준다.
- CreateView: 객체를 생성하는 폼을 보여준다.
- UpdateView: 기존 객체를 수정하는 폼을 보여준다.
- DeleteView: 기존 객체를 삭제하는 폼을 보여준다.
- Generic Date View
- YearArchiveView: 년도가 주어지면 그 년도에 해당하는 객체를 보여준다.
- MonthArchiveView: 월이 주어지면 그 월에 해당하는 객체를 보여준다.
- DayArchiveView: 날짜가 주어지면 그 날짜에 해당하는 객체를 보여준다.
- http://ruaa.me/django-view/
TemplateView: 템플릿이 주어지면 해당 템플릿을 렌더링한다.
# dongbaek/urls.py
urlpatterns = [
path('', TemplateView.as_view(template_name='root.html'), name='root'),
]
# dongbaek/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# File System Template Loader
os.path.join(BASE_DIR, 'inflearn', 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# inflearn/root.html
Instagram with Django / React.
RedirectView: URL이 주어지면 해당 URL로 리다이렉트 시켜준다.
- permanent (디폴트 : False)
- True : 301 응답 (영구적인 이동) - 검색엔진에 영향
- False : 302 응답 (임시 이동)
- url = None
- URL 문자열
- pattern_name = None
- URL Reverse를 수행할 문자열
- query_string = False
- QueryString을 그대로 넘길 것인지 여부
# dongbaek/urls.py
urlpatterns = [
path('', RedirectView.as_view(url='/instagram/'), name='root'),
]
# 위의 주소 = '' 입력시 자동으로 url 인자 주소로 이동함
위와 다르게 url을 지정하는 방식
# dongbaek/urls.py
urlpatterns = [
path('', RedirectView.as_view(
pattern_name = 'instagram:post_list',
), name='root'),
]
Django에서는 위와 같이 pattern_name을 지정하는 것을 선호함
반응형
'강의 정리 > Django Views' 카테고리의 다른 글
Django 뷰 장식자(Decorators) (0) | 2022.01.10 |
---|---|
Django 기본 CBV API (Generic display views) (0) | 2022.01.10 |
Django 클래스 기반 View (0) | 2022.01.08 |
Django URL Dispatcher와 정규 표현식 (0) | 2022.01.07 |
Django 다양한 응답의 함수 기반 뷰 (0) | 2022.01.06 |