Django中视图类的使用

视图类编程

视图类也叫类视图,就是用类来实现视图功能

  1. django默认只支持get和post数据的接受,没有给其他的请求方式提供一个更好的接受方式。视图类解决了这个问题。
  2. 视图函数只能解决单路由,单问题,视图类可以写更过,python是面向对象的语言,用python类写视图可以更好的保证代码结构。

视图类编写步骤

  1. 导入视图类的父类
    在这里插入图片描述
  2. 编写对各种请求的实例方法
    在这里插入图片描述
  3. 路由指出视图类
    在这里插入图片描述
    当前的视图类由于没有前端页面支持,所以没有csrf校验
    在url当中导入视图类避免csrf的方法
    在这里插入图片描述
    在url当中使用
    在这里插入图片描述
    视图类在编写的过程当中,请求数据的格式和响应数据的格式必须有定制,不可以随意写
    编写了get请求的处理逻辑:
class FoodView(View):
    def __init__(self,**kwargs):
        super(FoodView,self).__init__()
        self.result = {
            "version": "v1.0",
            "code": 200,
            "data": [

            ]
        }
    def get(self,request):
        """
        查询
        """
        id = request.GET.get("id")
        #如果get请求由传递id,返回id对应的数据
        #json格式无法封装python数据对象,所以要做数据转义
        if id:
            try:
                data = Foods.objects.get(id=id)
            except Exception as e:
                self.result["code"] = 500
                self.result["data"].append(str(e))
            else:
                d = {"name": data.name,"price": data.price,"picture": data.picture.url,"description": data.description,"type": data.type_id.label}
                self.result["data"].append(d)
        #如果没有 id返回所有数据
        else:
            data = [{"name": data.name,"price": data.price,"picture": data.picture.url,"description": data.description,"type": data.type_id.label} for data in Foods.objects.all()]
            self.result["data"] = data
        return JsonResponse(self.result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值