A.진입메소드
진입메소드는 클래스를 선언하는 메소드이다.
예시
urls.py에서
urlpatterns=[
path('about', MyView.as_view())
]
이때 as_view()가 진입메소드이다.
이런 진입메소드는 인스턴스를 생성하고 dispatch()메소드를 호출
dispatch()는 get, Post 형식을 구별하고 인스턴스 내에서 해당 이름의 메소드 요청을 한다.
메소드가 없으면 HttpResponseNotAllowed 예외를 띄운다.
as_view()와 dispatch() 는 django.Views.generic.View 클래스에 정의되어 있다.
django.Views.generic.View 를 상속받는 클래스 를 만들자.
B.클래스형 뷰는 함수형과 클래스형이 있다.
함수형 예시
def my_view(request):
if request.method== 'GET':
return HttpResponse('result')
클래스형 예시
class MyView(View):
def get(self, request):
return HttpResponse('result')
C.뷰의 상속
클래스형 뷰의 대부분은 장고가 제공하는 제네릭 뷰를 상속한다.
제네릭 뷰: 공통적인 작업을 추상화 시켜 기본적으로 제공하는 클래스형 뷰
클래스형 뷰 예시
첫번째 방법
urls.py에서
urlpatterns=[
path('about/', AboutView.as_view),
]
views.py에서
form django.view.generic import TemplateView
class AboutView(TemplateView):
template_name="about.html"
두번째방법
urlpatterns=[
path('about/', TemplateView.as_view(template_name="about.html")),
]
d.오버라이딩
template_name은 은 TemplateView 의 속성이다.
하위 클래스의 메소드와 as_view() 메소드를 통해서 오버라이딩이 가능하다.
'웹 > Django' 카테고리의 다른 글
장고 프로젝트 순서 기본1 -모델 (0) | 2020.12.14 |
---|---|
제네릭 뷰 (0) | 2020.12.11 |
폼 처리하기 (0) | 2020.12.10 |
템플릿 활용법3 - 템플릿 상속 (0) | 2020.12.10 |
템플릿 활용법2 -템플릿 태그 (0) | 2020.12.09 |