Django的FBVApi写法

10 篇文章 0 订阅
4 篇文章 0 订阅

FBV与CBV最大区别是不创建类,直接创建视图函数,FBV符合小的业务场景中进行使用。

整体FBV目录:

 

FBV在使用中是在包里文件进行写程序的。操作方法:分别点击models.py、views.py文件右键选择refactor再选择Convert to Python Package,然后分别创建Models.py文件和API.py文件、把原有的代码复制到这两个文件里。需要注意的是:

FBV的视图必须在views包文件夹下的__init__.py下进行引入视图函数名称方可执行程序

from .BookAPI import book_add, book_one, book_all

urls路由

urlpatterns = [
    path('bookadd/', views.book_add, name='book_add'),
    path('bookone/<int:id>/', views.book_one, name='book_one'),
    path('bookall/', views.book_all, name='book_all'),
]
models数据表
class Book(models.Model):
    b_name = models.CharField(max_length=32)
    b_price = models.FloatField(default=1)

    class Meta:
        db_table = 'FBV_Book'

    def to_dict(self):
        return {'id': self.id, 'b_name': self.b_name, 'b_price': self.b_price}

views视图

@csrf_exempt
# 添加数据api接口函数
def book_add(request):
    if request.method == "GET":
        book_list = Book.objects.all()
        book_list_json = []
        for book in book_list:
            book_list_json.append(book.to_dict())
        data = {
            'status': 200,
            'msg': 'ok',
            'data': book_list_json
        }
        return JsonResponse(data=data)

    elif request.method == "POST":
        # 通过post获取参数
        b_name = request.POST.get("b_name")
        b_price = request.POST.get("b_price")
        # 获取参数后进行保存
        book = Book()
        book.b_name = b_name
        book.b_price = b_price
        book.save()
        data = {
            # 201代表创建或更新成功
            'status': 201,
            'msg': 'add success',
            'data': book.to_dict()
        }
        # status=201:真实请求状态码
        return JsonResponse(data=data)


@csrf_exempt
# 查询一条数据api接口函数
def book_one(request, id):
    if request.method == "GET":
        book_obj = Book.objects.get(pk=id)
        data = {
            'status': 200,
            'msg': 'ok',
            'data': book_obj.to_dict()
        }
        return JsonResponse(data=data)
    # 删除一条数据api接口函数
    elif request.method == "DELETE":
        book_obj = Book.objects.get(pk=id)
        book_obj.delete()
        data = {
            'status': 204,
            'msg': 'delete success',
        }
        return JsonResponse(data=data)


@csrf_exempt
def book_all(request):
    if request.method == "POST":
        id = request.POST.getlist('id')
        idstring = ','.join(id)
        Book.objects.extra(where=['id IN (' + idstring + ')']).delete()
        data = {
            'status': 204,
            'msg': 'delete success',
        }
        return JsonResponse(data=data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值