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
]