Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
from django.db import transaction
使用事务可以有效的防止插入数据时出现错误,影响数据的完整性,再出现错误的时候可以回滚事务,做到要么全部插入成功要么全部都不插入。
一、事务修饰器
视图代码中使用保存点来担任子事务的角色,atomic()上下文管理器。那么,最后所有更改要么被提交,要么被回滚。可以简单使用atomic()装饰器来装饰每一个视图方法。
class TransactionAtomicMixin(object):
"""提供数据库事务功能"""
@classmethod
def as_view(cls, **initkwargs):
view = super(TransactionAtomicMixin, cls).as_view(**initkwargs)
return transaction.atomic(view)
在Django中,还提供了保存点的支持,可以在事务中创建保存点来记录数据的特定状态,数据库出现错误时,可以恢复到数据保存点的状态。
from django.db import transaction
# 创建保存点
save_id = transaction.savepoint()
# 回滚到保存点
transaction.savepoint_rollback(save_id)
# 提交从保存点到当前状态的所有数据库事务操作
transaction.savepoint_commit(save_id)