django的FBV和CBV

一 . 什么是FBV&CBV

FBV -Function Base VIew
CBV-Class Base Viev
  • FBV实现方法:

      def user(request):
        if request.method == 'GET':
            return HttpResponse('FBV GET')
        if request.method == 'POST':
            return HttpResponse('FBV POST')
         if request.method == 'DELETE':
            return HttpResponse('FBV DELETE')
         if request.method == 'PUT':
            return HttpResponse('FBV PUT')
      路由:url(r'^fuser/',views.user),
    
  • CBV实现方法:

      class User(View):
          def get(self, request, *args, **kwargs):
              return HttpResponse('FBV GET')
    
          def post(self, request, *args, **kwargs):
              return HttpResponse('FBV POST')
    
          def put(self, request, *args, **kwargs):
              return HttpResponse('FBV PUT')
    
          def delete(self, request, *args, **kwargs):
              return HttpResponse('FBV DELETE')
      路由:url(r'^cuser/',views.User.as_view())
    
  • 注意 继承自view ,view主要功能是以 类反射实现的: url路由->as_view->view函数->dispatch()函数.

查找View内部实现调用的步骤

反射查找1.png

反射查找2.png

反射查找3.png

CBV的映射方法常用四种

  • 1. hasattr(obj,name_str): 判断objec是否有name_str这个方法或者属性 ---> 通过hasattr 判断属性/方法是否存在。
  • 2. getattr(obj,name_str): 获取object对象中与name_str同名的方法或者函数 --->获取对象中的方法或函数 。
  • 3. setattr(obj,name_str,value): 为object对象设置一个以name_str为名的value方法或者属性 --> 更改,或添加一个新的属性或方法。
  • 4. delattr(obj,name_str): 删除object对象中的name_str方法或者属性 --- > 删除对象中的方法或属性。

什么是RESTFUL?

RESTFUL只是一个规范,我们可以去遵循,能够使你写的接口更规范

规则1.API与用户的通讯协议,总是使用HTTPs协议

2.https://www.baidu.com/api/cuser(推荐这个方式)

3.面向资源的编程

4.API的版本部署规则(写API接口的时候要添加版本号)

5.不同的操作,使用不同的请求方式 get post put patch delete

6.过滤方式规范(url地址后添加参数)指定返回记录的数量

7.常见的状态码 2xx 3xx 4xx 5xx.

8.错误信息的返回(key-value形式)

9.不同路由的申请,往往对应不同的返回结构

10.根据id拼接成一个url路径 [{'user':'lisi','age':18,'url':'https://www.baidu.com/api/user/1/'}]

【django-rest-framework 参考链接】

你可能感兴趣的:(django的FBV和CBV)