사용자 도구

사이트 도구


python:django:class-based

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
python:django:class-based [2021/11/04 14:01] – [TemplateView] taekgupython:django:class-based [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +====== Built-in class-based views API ======
 +https://docs.djangoproject.com/en/3.2/ref/class-based-views/
 +  * Base views
 +    * View
 +    * TemplateView
 +    * RedirectView
 +  * Generic display views
 +    * DetailView
 +    * ListView
 +  * Generic editing views
 +    * FormView
 +    * CreateView
 +    * UpdateView
 +    * DeleteView
 +  * Generic date views
 +    * ArchiveIndexView
 +    * YearArchiveView
 +    * MonthArchiveView
 +    * WeekArchiveView
 +    * DayArchiveView
 +    * TodayArchiveView
 +    * DateDetailView
 +  * Class-based views mixins
 +    * Simple mixins
 +      * ContextMixin
 +      * TemplateResponseMixin
 +    * Single object mixins
 +      * SingleObjectMixin
 +      * SingleObjectTemplateResponseMixin
 +    * Multiple object mixins
 +      * MultipleObjectMixin
 +      * MultipleObjectTemplateResponseMixin
 +    * Editing mixins
 +      * FormMixin
 +      * ModelFormMixin
 +      * ProcessFormMixin
 +      * DeletionMixin
 +    * Date-based mixins
 +      * YearMixin
 +      * MonthMixin
 +      * DayMixin
 +      * WeekMixin
 +      * DateMixin
 +      * BaseDeteListMixin
 +  * Class-based generic views - flattened index
 +    * Simple generic views
 +      * View
 +      * Template View
 +      * Redirect View
 +    * Detail Views
 +      * DetailView
 +    * List Views
 +      * ListView
 +    * Editing views
 +      * FormView
 +      * CreateView
 +      * UpdateView
 +      * DeleteView
 +    * Date-based views
 +      * ArchiveIndexView
 +      * YearArchiveView
 +      * MonthArchiveView
 +      * WeekArchiveView
 +      * DayArchiveView
 +      * TodayArchiveView
 +      * DateDetailView
 +
 +===== class-based의 메소드 호출 =====
 +==== View ====
 +^ 순서 ^ 메소드 ^ 설명 ^
 +| 1 | setup(request, *args, %%**%%kwargs) | **dispatch()**에 앞서 키 초기화를 수행. 이 메소드를 덮어쓰면, **super()**를 호출해야 한다. |
 +| 2 | dispatch(request, *args, %%**%%kwargs) | <wrap> **view**보기 의 일부 - **request** 인수와 인수 를 받아들이고 HTTP **response**을 반환하는 메서드입니다 .
 +기본 구현은 HTTP 메서드를 검사하고 HTTP 메서드와 일치하는 메서드에 위임을 시도합니다; GET은 **get()**에, POST는 **post()**에, 등등.
 +기본적으로 HEAD요청은 get()에 위임됩니다. HEAD와 다른 방식으로 요청 을 처리해야 하는 경우, **head()**메서드를 GET재정의할 수 있습니다. </wrap> |
 +| 3 | http_method_not_allowed(request, *args, %%**%%kwargs) | <wrap> 뷰가 지원하지 않는 HTTP 메서드로 호출된 경우 이 메서드가 대신 호출됩니다.
 +
 +기본 구현은 HttpResponseNotAllowed일반 텍스트로 된 허용된 메서드 목록과 함께 반환 됩니다.</wrap> |
 +| 4 | options(request, *args, %%**%%kwargs) | OPTIONS HTTP 동사에 대한 요청에 대한 응답을 처리합니다. 보기에 허용된 HTTP 메서드 이름 목록이 포함된 **Allow**헤더가 있는 응답을 반환 합니다. |
 +==== TemplateView ====
 +**Method Flowchart**
 +  - setup()
 +  - dispatch()
 +  - http_method_not_allowed()
 +  - get_context_data()
 +    * get_context_data(%%**%%kwargs) - 템플릿 컨텍스트를 나타내는 사전을 반환합니다. 제공된 키워드 인수는 반환된 컨텍스트를 구성합니다. 
 +<code python>
 +from django.views.generic.base import TemplateView
 +
 +from articles.models import Article
 +
 +class HomePageView(TemplateView):
 +
 +    template_name = "home.html"
 +
 +    def get_context_data(self, **kwargs):
 +        context = super().get_context_data(**kwargs)
 +        context['latest_articles'] = Article.objects.all()[:5]
 +        return context
 +</code>
 +적절한 경우 **alters_data** 를 사용하십시오.
 +
 +템플릿 컨텍스트에 뷰 인스턴스가 있으면 잠재적으로 위험한 방법을 템플릿 작성자에게 노출시킬 수 있습니다. 이와 같은 메소드가 템플리트에서 호출되지 않도록하려면 해당 메소드에서 alters_data=True 를 설정 하십시오. 자세한 내용 은 템플릿 컨텍스트 렌더링에 대한 설명서를 참조하십시오.
 +
 +==== RedirectView ====
 +
 +**Method Flowchart**
 +  - setup()
 +  - dispatch()
 +  - http_method_not_allowed()
 +  - get_redirect_url()
 +    * get_redirect_url(*args, %%**%%kwargs) - 리디렉션 할 대상 URL을 구성합니다.
 +