FBV和CBV

  • FBV 函数视图,Function Base View
  • CBV 类视图,Class Base View

关于CBV

  • 一个路由提供多种HTTP请求方法时,使用类视图,类视图更符合RESTFUL语义
  1. 代码可读性好
  2. 类视图对于函数视图有更高的复用性,如果项目中的其他功能模块需要用到某个类视图中的某个特定功能逻辑时,直接继承该类即可
  • views.py中定义视图类继承View
 # 继承django中的View,会进行方法的转发
 from django.views import View

 class XxxView(View):
     def get(self, request):
         pass
  • urls.py中匹配路由as_view()
 path("xxxx", views.XxxView.as_view())

类视图中,如果发了请求,但是在类视图中没有对应的方法时,会返回405的状态码

事务

  • 事务的四大特性
  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

Django事务支持

  • 模块:from django.db import transaction
  • 开启事务:with transaction.atomic()
  • 创建存储点:sid = transaction.savepoint()
  • 提交事务:transaction.savepoint_commit(sid)
  • 回滚事务:transaction.savepoint_rollback(sid)