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 参考链接】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Api 接口 高山山书写例子 resources.py#!coding=utf-8import jsonfrom ...
    入间阅读 422评论 0 0
  • 开发模式普通开发模式(前后端放一起)前后端分离后端开发为前端提供URL(API/接口的开发)Django中的 FB...
    xinmin阅读 301评论 0 0
  • sudo apt install mysql-server mysql-client pip install py...
    v_c61b阅读 714评论 0 0
  • Django: csrf防御机制 csrf攻击过程 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登...
    lijun_m阅读 1,083评论 0 0
  • 常说工作要“讲方法”。何谓工作方法?简单说就是:①凡事有记录(目的是将来追溯或者总结);②凡事有计划(有目标、有方...
    行与心田阅读 191评论 0 0