Python - Django - FBV 和 CBV

FBV:

Function Base View,基于函数的视图

views.py:

from django.shortcuts import render, HttpResponse


# FBV
def upload(request):
    if request.method == "POST":
        filename = request.FILES["upload_file"].name
        with open(filename, "wb") as f:
            for chunk in request.FILES["upload_file"].chunks():
                f.write(chunk)
        return HttpResponse("上传OK")
    else:
        return render(request, "upload.html")

urls.py:

from django.conf.urls import url
from app01 import views

urlpatterns = [
    url(r'^upload/', views.upload),  # FBV
]

CBV:

Class Base View,基于类的视图

views.py:

from django.shortcuts import render, HttpResponse
from django.views import View  # CBV 需要导入


# CBV
class Upload(View):
    # 定义 get 函数,用于处理 get 请求
    def get(self, request):
        return render(request, "upload.html")

    # 定义 post 函数,用于处理 post 请求
    def post(self, request):
        filename = request.FILES["upload_file"].name
        with open(filename, "wb") as f:
            for chunk in request.FILES["upload_file"].chunks():
                f.write(chunk)
        return HttpResponse("上传OK")

urls.py:

from django.conf.urls import url
from app01 import views

urlpatterns = [
    # url(r'^upload/', views.upload),  # FBV
    url(r'^upload/', views.Upload.as_view()),  # CBV
]

猜你喜欢

转载自www.cnblogs.com/sch01ar/p/11271682.html
今日推荐