dangoフレームワーク学習:40.CBVとFBVモード
3558 ワード
FBVとCBVモード
FBV(function base views)は、ビューで関数を使用してリクエストを処理します.これは一般的にdjangoの入門を学ぶときに使用する方法です.
CBV(class base views)は、ビューでクラス処理要求を使用することであり、オブジェクト向けのプログラミング方式である.
FBV(function base views)はviews.pyファイルでビュー関数を定義してユーザ要求を処理し、関数ではifでrequest.method要求方式がGETかPOST要求かを判断して対応する処理を行う.
FBVモードにアクセスするにはログインが必要な場合は、関数にデザイナ@login_を付けるだけですrequired
CBV(class base views)は、クラス処理要求をビューで使用する.
1.カスタムクラスはView親を継承する必要があります
2.コードの多重性を向上させ、オブジェクト向けの技術を使用することができる.
3.多くのif判定ではなく、異なる関数に対して異なるHTTPメソッドに対して処理することができ、コードの可読性を向上させることができる.
4.CBVモード継承のViewクラスは、複数の要求方式に対応する応答関数を提供しており、これ以上判断する必要がなく、直接サブクラスで継承の書き換えが可能な方法を提供している
5.CBVモードサブクラス継承書き換え親リクエスト方式の応答関数親dispathメソッドによる反射配布urls.pyルーティングシステムではMyview.as_を使用する必要があるview()代替ビュー関数
method_decoratorはCBVビューにログインチェックを追加します.
FBV(function base views)は、ビューで関数を使用してリクエストを処理します.これは一般的にdjangoの入門を学ぶときに使用する方法です.
CBV(class base views)は、ビューでクラス処理要求を使用することであり、オブジェクト向けのプログラミング方式である.
from django.conf.urls import url
urlpatterns = [
url(r'^fbvdemo/$', views.fbvdemo),
url(r'^cbvdemo/$', views.Cbvdemo.as_view()),
]
FBV(function base views)はviews.pyファイルでビュー関数を定義してユーザ要求を処理し、関数ではifでrequest.method要求方式がGETかPOST要求かを判断して対応する処理を行う.
FBVモードにアクセスするにはログインが必要な場合は、関数にデザイナ@login_を付けるだけですrequired
# function base views
from django.http import HttpResponse, JsonResponse
from django.contrib.auth.decorators import login_required
@login_required
def fbvdemo(request):
'''function base views'''
context = {"code": 0,"msg": ""}
if request.method == "GET":
context["msg"] = " fbvdemo get "
return JsonResponse(context)
if request.method == "POST": context["msg"] = " fbvdemo POST " return JsonResponse(context)
from django.conf.urls import url
drom app import views
urlpatterns = [
url(r'^fbvdemo/$', views.fbvdemo),
url(r'^cbvdemo/$', views.Cbvdemo.as_view()),
]
CBV(class base views)は、クラス処理要求をビューで使用する.
1.カスタムクラスはView親を継承する必要があります
2.コードの多重性を向上させ、オブジェクト向けの技術を使用することができる.
3.多くのif判定ではなく、異なる関数に対して異なるHTTPメソッドに対して処理することができ、コードの可読性を向上させることができる.
4.CBVモード継承のViewクラスは、複数の要求方式に対応する応答関数を提供しており、これ以上判断する必要がなく、直接サブクラスで継承の書き換えが可能な方法を提供している
5.CBVモードサブクラス継承書き換え親リクエスト方式の応答関数親dispathメソッドによる反射配布urls.pyルーティングシステムではMyview.as_を使用する必要があるview()代替ビュー関数
from django.http import JsonResponse
from django.views import View
class Cbvdemo(View):
context={"msg":"",
"code":200}
def get(self,request): self.context["msg"] = 'get ' return Jsonresponse(context) def post(self,request): self.context['msg'] = 'post ' return Jsonresponse(context) def put(self, request): self.context['msg'] = 'put ' return Jsonresponse(context)
method_decoratorはCBVビューにログインチェックを追加します.
from django.views import View
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.http import JsonResponse
@method_decorator(login_required,name='get')
@method_decorator(login_required,name='post') @method_decorator(login_required,name='put') class Cbvdemo(View): context={"msg":"", "code":0} def get(self,request): self.context["msg"] = 'get ' return JsonResponse(self.context) def post(self,request): self.context['msg'] = 'post ' return JsonResponse(self.context) def put(self, request): self.context['msg'] = 'put ' return JsonResponse(self.context)