Django의 함수 기반 뷰 및 클래스 기반 뷰
소개
내가 장고를 막 배우기 시작했을 때내가 선택할 수 있는 문제가 하나 있다.
함수에 기반한 보기인지 클래스에 기반한 보기인지 어떤 보기를 사용해야 합니까?
나는 이것이 Django가 초보자들에게 파악하기 어려운 핵심 원인 중의 하나라고 믿는다.
따라서 저는 본고가 당신에게 이러한 보기의 기본 기능을 이해하게 할 수 있다고 믿습니다.
당신의 개발에서 선택을 하려면 당신의 용례를 바탕으로 해야 합니다.
기능 기반 뷰(FBV)
기능 기반 뷰(FBV)란 무엇입니까?
함수 기반 뷰는 Python에서 함수를 생성하는 것과 유사합니다.
직접 호출 함수와 다르다.
이 요청은 request
에서 views.py
라고 불리는 HTTP 요청을 수신합니다.
URL에 지정된 URL에 따라 HTMLresponse
을 반환합니다.py 호출 함수.
이제 막 장고를 배우기 시작하면
함수 기반 보기는 Django Girls 또는 Mozilla Developer Network 또는 Django 강좌에서 소개한 첫 번째 보기입니다.
얘 어때요?
가장 기본적인 형식에서 함수 기반의 보기는 이렇게 보이고 응답을 되돌려줍니다.fbv_1
함수에서 return
는 HTML 응답을 반환하는 데 사용됩니다.
그러나 forfbv_2
는 render
라는 이름의 미리 만들어진 템플릿 설계를 사용하여 HTML 응답을 생성합니다.
from django.http import HttpResponse, HttpResponseNotFound, Http404
from django.shortcuts import render
from polls.models import Poll
def fbv_1(requests):
if requests:
return HttpResponse('<h1>Page was found</h1>')
else:
return HttpResponseNotFound('<h1>Page not found</h1>')
def fbv_2(request, poll_id):
try:
p = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise Http404("Poll does not exist")
return render(request, 'polls/detail.html', {'poll': p})
장점과 단점
다음은 함수 기반의 보기를 사용한 나의 연구와 경험을 바탕으로 한다.
찬성 의견
기능 기반 뷰(FBV)란 무엇입니까?
함수 기반 뷰는 Python에서 함수를 생성하는 것과 유사합니다.
직접 호출 함수와 다르다.
이 요청은
request
에서 views.py
라고 불리는 HTTP 요청을 수신합니다.URL에 지정된 URL에 따라 HTML
response
을 반환합니다.py 호출 함수.이제 막 장고를 배우기 시작하면
함수 기반 보기는 Django Girls 또는 Mozilla Developer Network 또는 Django 강좌에서 소개한 첫 번째 보기입니다.
얘 어때요?
가장 기본적인 형식에서 함수 기반의 보기는 이렇게 보이고 응답을 되돌려줍니다.
fbv_1
함수에서 return
는 HTML 응답을 반환하는 데 사용됩니다.그러나 for
fbv_2
는 render
라는 이름의 미리 만들어진 템플릿 설계를 사용하여 HTML 응답을 생성합니다.from django.http import HttpResponse, HttpResponseNotFound, Http404
from django.shortcuts import render
from polls.models import Poll
def fbv_1(requests):
if requests:
return HttpResponse('<h1>Page was found</h1>')
else:
return HttpResponseNotFound('<h1>Page not found</h1>')
def fbv_2(request, poll_id):
try:
p = Poll.objects.get(pk=poll_id)
except Poll.DoesNotExist:
raise Http404("Poll does not exist")
return render(request, 'polls/detail.html', {'poll': p})
장점과 단점
다음은 함수 기반의 보기를 사용한 나의 연구와 경험을 바탕으로 한다.
찬성 의견
속이다
클래스 기반 뷰(CBV)
클래스 기반의 보기를 도입하여 보기의 불활성, 코드 중용성과 맞춤형 문제를 해결했다.
클래스 기반 뷰(CBV)란 무엇입니까?
이러한 이유로 클래스 기반 뷰(CBV)가 생성됩니다.
그것의 실현은 요청 조건에서 만들어진 흔한 모델을 해결하기 위한 것이다.
너는 CBV를 대본에 비유할 수 있다.
요청 조건에 따라 다르거나 복잡한 보기를 만들 수 있습니다.
이 극본은 Classly Class-Based Views에 세워질 수 있다.
Django에서 CBV를 위해 무엇을 실현했는지 더 잘 알 수 있습니다.
얘 어때요?
CBV의 가장 기본적인 형식은 detail.html
에서 기본값View
을 가져와 CBV를 만드는 것이다.
HTTP request methods 예: django.views
, GET
또는 POST
에 따라 올바른 응답을 반환합니다.
from django.views import View
class CBV(View):
def get(self, request):
# Code block for GET request
pass
def post(self, request):
# Code block for POST request
pass
CBV의 고급 또는 복잡한 버전을 만들기 위해 내장형Generic Views으로 일반적인 동작을 해결합니다
다른 하나는 특정 기능을 제공하는 것Mixins이다.
CBV에 대해 자세히 알아보려면 Django documentationClassly Class-Based Views & Class-Based Views in Django를 방문하여 자세한 내용을 확인하십시오.
장점과 단점
다음은 내가 유형에 기초한 관점을 사용하는 데 대한 연구와 경험을 바탕으로 한다.
찬성 의견
from django.views import View
class CBV(View):
def get(self, request):
# Code block for GET request
pass
def post(self, request):
# Code block for POST request
pass
DELETE
및 playbook
스타일로 CBV 제작이 용이함속이다
FBV와 CBV 사이에는 어떤 차이가 있습니까?
보기가 간단하고 유지보수가 용이하며 대량의 맞춤형 직접 솔루션이 필요하면 FBV를 선택하십시오.
보기가 복잡하고 사용자 정의 및 재사용이 필요한 경우 CBV를 선택합니다.
경우에 따라 CBV를 선택해야 합니다.
특히 폼을 만들 계획이라면 검증하십시오.
또한 끝점 생성을 위해 Django REST Framework 을 사용하고 있을 수도 있습니다.
결론
나는 정말 이 글이 네가 FBV와 CBV를 더욱 잘 이해하는 데 도움을 줄 수 있기를 바란다.
따라서 Django에서 FBV와 CBV의 학습 곡선을 빠르게 실현할 수 있습니다.
그 외에, 나는 그것이 당신의 용례를 위해 정확한 보기를 선택할 수 있도록 충분한 견해를 제공하기를 바랍니다.
마지막으로 CBV나 FBV에 대한 선호도는 여러 가지가 있다.
나에게 있어서, 그것은 너에 대한 의미 있는 용례에서 그것을 사용하는 경향이 더 있다.
나는 네가 어떤 일을 빨리 완성해야 한다면 CBV의 연구와 실현이 너에게 유익할 것이라고 믿는다.
이 글을 좋아하신다면 제 Adventurer's Newsletter 를 등록하여 Python, 창업, 웹 개발 분야의 매주 업데이트를 받으세요.
너도 나와 함께 나의 Dev에 관한 문장의 최신 업데이트를 얻을 수 있다
원본 게시물Function-Based Views vs Class Based-Views in Django - Reading Time: 5 Mins에 표지 이미지는 Photo by Dietmar Becker on Unsplash에서 제공합니다
참고
나는 정말 이 글이 네가 FBV와 CBV를 더욱 잘 이해하는 데 도움을 줄 수 있기를 바란다.
따라서 Django에서 FBV와 CBV의 학습 곡선을 빠르게 실현할 수 있습니다.
그 외에, 나는 그것이 당신의 용례를 위해 정확한 보기를 선택할 수 있도록 충분한 견해를 제공하기를 바랍니다.
마지막으로 CBV나 FBV에 대한 선호도는 여러 가지가 있다.
나에게 있어서, 그것은 너에 대한 의미 있는 용례에서 그것을 사용하는 경향이 더 있다.
나는 네가 어떤 일을 빨리 완성해야 한다면 CBV의 연구와 실현이 너에게 유익할 것이라고 믿는다.
이 글을 좋아하신다면 제 Adventurer's Newsletter 를 등록하여 Python, 창업, 웹 개발 분야의 매주 업데이트를 받으세요.
너도 나와 함께 나의 Dev에 관한 문장의 최신 업데이트를 얻을 수 있다
원본 게시물Function-Based Views vs Class Based-Views in Django - Reading Time: 5 Mins에 표지 이미지는 Photo by Dietmar Becker on Unsplash에서 제공합니다
참고
Mozilla Developer Network
Class-Based Views
Object Orientated Design
Reference
이 문제에 관하여(Django의 함수 기반 뷰 및 클래스 기반 뷰), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/steelwolf180/function-based-views-vs-class-based-views-in-django-201j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)