Django项目 CBV和FBV
CBV :class base view 基于类的视图
FBV:function base view 基于函数的视图
以前在views.py文件中写的都是 FBV (基于函数的视图)
示例: 以下是一个新增书籍的一个方法 post请求和get请求的操作都写在一个里面
def add_booklist(request):
if request.method =="POST":
new_bookname= request.POST.get("book_name") #获取书名
new_booktype= request.POST.get("book_type") #获取书类型
new_publisher_id = request.POST.get("publisher") #获取出版社id
print(new_bookname,new_publisher_id)
models.Book.objects.create(name=new_bookname,type=new_booktype,Publisher_id=new_publisher_id )
return redirect("/booklist/") # 创建并返回
# 下面是get请求时的操作
publisher=models.Publisher.objects.all()
return render(request,"add_booklist.html",{"pub_list":publisher})
修改为CBV: 把get请求的后续操作作为一个方法 post请求的后续操作作为另一个方法
from django.views import View #需要先导入
class Add_booklist(View):
def get (self, request):
publisher = models.Publisher.objects.all()
return render(request, "add_booklist.html", {"pub_list": publisher})
def post (self,request):
new_bookname = request.POST.get("book_name") # 获取书名
new_booktype = request.POST.get("book_type") # 获取书类型
new_publisher_id = request.POST.get("publisher") # 获取出版社id
print(new_bookname, new_publisher_id)
models.Book.objects.create(name=new_bookname, type=new_booktype, Publisher_id=new_publisher_id)
return redirect("/booklist/") # 创建并返回
urls.py文件中的修改
urlpatterns = [
#path('add_booklist/', views.add_booklist), # 新增信息 这是原来的FBV
path('add_booklist/', views.Add_booklist.as_view()), #修改为CBV
实现的功能其实是一样的,只是基于类的视图可以看的更清晰,明了一点

浙公网安备 33010602011771号