django中实现事务的几种方式
1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程
DATABASES = { 'default': { #全局开启事务,绑定的是http请求响应整个过程 'ATOMIC_REQUESTS': True, } } from django.db import transaction # 局部禁用事务 @transaction.non_atomic_requests def seckill(request): return HttpResponse('秒杀成功')
2 一个视图函数在一个事物中
# fbv开启 from django.db import transaction @transaction.atomic def seckill(request): return HttpResponse('秒杀成功') # cbv开启 from django.db import transaction from rest_framework.views import APIView class SeckillAPIView(APIView): @transaction.atomic def post(self, request): pass
3 局部使用事务
from django.db import transaction def seckill(request): with transaction.atomic(): pass # 都在一个事物中 return HttpResponse('秒杀成功')