오늘 한 것
[O] : 백준 2문 : 입출력/사칙연산 문제 풀었다
[O] : 장고 튜토리얼 진행 : 6장
제너릭 뷰
- 제너릭 뷰. 더 알아보기
"generic views" = 장고에서 제공하는 단축키
각 제너릭 뷰는 어떤 모델이 적용될지 알아야한다 = model
template_name은 기본 템플릿 이름 대신 특정이름을 사용하도록 알려주는 것임
url에서 캡쳐된 기본 키 값이 pk라고 기대함
from django.views import genericclass
def DetailView(generic.DetailView):
model = Question
template_name = "polls/detail.html"
[출처] : https://akpark.tistory.com/34
+++ 추가 글 작성 +++
정리를 하다보니 serializer와 함께 활용하려면 많이 헷갈릴듯.
장고에 대한 아주 깊은 이해도가 필요할 것 같다..
View의 기본적인 사용 예시
- views.py : import, 상속하여 get post put delete 를 사용하거나, 내장되어있는 메서드들을 활용한다.
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request, *args, **kwargs):
return HttpResponse("Hello, World!")
- urls.py : 클래스View를 선언하고 as_View()로 url을 연결해준다
from django.urls import path
from myapp.views import MyView
urlpatterns = [
path("mine/", MyView.as_view(), name="my-view"),
]
> Base views
기본이 되는 세 클래스. 자체적으로 사용할 수도 있고, 다른 하위 View에 상속되어있다!
- View : 기본 뷰 클래스. 다른 클래스 기반 View에서 상속하고 있다.
class django.views.generic.base.View #경로
* 메서드 순서도
: 모든 뷰가 기본적으로 이 순서로 흘러가고, options에서 각각의 고유 기능을 수행
- setup() : 키 뷰의 초기 설정 내용을 보여준다
- dispatch() : 인수와 인수를 받아들이고 HTTP응답을 반환
- http_method_not_allowed() : 뷰가 지원하지 않는 HTTP메서드로 호출된 경우 대신 호출됨
- options() : 옵션 HTTP 요청에대한 응답 처리(TemplateView에서는 get_context_data()로 템플릿 렌더링, RedirectView에서는 get_redirect_url()로 리디렉션 실행)
- TemplateView : URL에 캡처된 매개변수가 포함된 컨텍스트를 사용하여 지정된 템플릿을 렌더링
- RedirectView : 지정된 URL로 리디렉션 함
> Generic display views
데이터 표시 뷰, 프로젝트에서 가장 일반적으로 사용됨
- DetailView : 세부 내용을 가져옴.
- options()
- get_template_names()
- get_slug_field()
- get_queryset()
- get_object()
- get_context_object_name()
- get_context_data()
- get()
- render_to_response()
- ListView : 개체 목록을 나타내는 페이지(쿼리, 쿼리셋.. 꼭 쿼리집합일 필요는 없다)
- options()
- get_template_names()
- get_queryset()
- get_context_object_name()
- get_context_data()
- get()
- render_to_response()
> Generic editing views
콘텐츠 편집 기반 뷰
- FormView : 폼을 표시하는 view / 에러시 유효성검사 에러를 보여준다, 성공시 url로 리디렉션
- CreateView : 객체 생성, 유효성 검사 시 오류(있는 경우)가 있는 폼 다시 표시, 객체 저장을 위한 폼을 표시하는 view
- UpdateView : 기존 개체 편집 양식 뷰, 유효성 검사, 개체 변경사항 저장
- DeleteView : 확인페이지 get, 기존 개체 삭제 view POST 메서드로 들어올 때만 지워줌!
> Generic date views
- ArchiveIndexView : 날짜 별로 최신 개체를 보여주는 최상위 index page,
- YearArchiveView : 연간 아카이브 페이지.
- MonthArchiveView : 지정된 달의 모든 개체를 보여주는 월간 아카이브 페이지.
- WeekArchiveView : 지정된 주의 모든 개체를 보여주는 주간 아카이브 페이지.
- DayArchiveView : 지정된 날짜의 모든 개체 표시, 일간 아카이브 페이지.
- TodayArchiveView : 일일 아카이브 페이지. 오늘! Today를 제외하고 DayArchieveView와 동일!
- DateDetailView : 개별 개체를 나타냄.
``날짜가 미래인 개체는 allow_future해야 포함된다. allow_future_ True_
[참조] : https://docs.djangoproject.com/en/4.2/topics/class-based-views/generic-display/
# 팀 과제에서 활용한 내용 기록
> urls.py
urlpatterns : [
path("comment/my", views.get_my_comments.as_view(), name="my_comments"),]
> views.py
class MyCommentList(generic.ListView):
# ListView를 사용해 댓글 10개씩 보여주기
model = CommentModel
template_name = "comments/my_comment.html"
context_object_name = "latest_comment_list"
paginate_by = 20
def get_queryset(self):
# 최근 댓글 불러오기
my_comment = CommentModel.objects.all().order_by("-created_at")
return my_comment
ListView 사용
template_name : .html 템플릿 파일과 연결할 수 있음
model : 가져올 모델 정의
context_object_name : template이나 다른 곳에서 활용하고자할 때 사용할 이름
= object_list가 기본 값으로 들어간다.
queryset = 쿼리할 개체 목록을 지정할 수도 있다!
이전 학습내용을 바탕으로 내일 할 것
- 장고 기초 점검하기
- 장고 심화 들어가기
- 알고리즘 풀기
'AI 웹개발반' 카테고리의 다른 글
[TIL] python class, 장고 자주 쓰는 코드 정리 (3) | 2023.04.20 |
---|---|
[TIL] 오늘 공부, 장고 기초 마무리 (0) | 2023.04.18 |
[TIL] 수정 기능, save & update (0) | 2023.04.15 |
[WIL]:05 장고 기초 다지기 및 팀프진행 (0) | 2023.04.15 |
[TIL] 팀프, 페이지네이션 구현 (2) | 2023.04.14 |