专栏首页数据云团Django实战-生鲜电商-数据库事务

Django实战-生鲜电商-数据库事务

在订单确认中,涉及到获取参数、校验参数;查询商品数据,判断是否为购物车的商品,遍历商品 id,获取商品信息;读取商品的数量,计算商品的金额,判断库存,需要用户的地址信息。

一、提交订单

① 在提交之前,需要验证用户是否登录

构造登录验证的函数

def login_required_json(view_func):
    @wraps(view_func)
    def wrapper(request, *args, **kwargs):
        if not request.user.is_authenticated():
            # 如果用户未登录,返回json数据
            return JsonResponse({"code": 1, "message": "用户未登录"})
        else:
            # 如果用户登录,则进入到视图函数中执行
            return view_func(request, *args, **kwargs)
    return wrapper

在将登录验证的视图封装到 mixin 类中。

class LoginRequiredJsonMixin(object):
    @classmethod
    def as_view(cls, **initkwargs):
        view = super(LoginRequiredJsonMixin, cls).as_view(**initkwargs)
        return login_required_json(view)

② 增加数据库事务功能

事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

from django.contrib.auth.decorators import login_required
from django.http import JsonResponse
from functools import wraps
from django.db import transaction
class TransactionAtomicMixin(object):
    """提供数据库事务功能"""
    @classmethod
    def as_view(cls, **initkwargs):
        view = super(TransactionAtomicMixin, cls).as_view(**initkwargs)
        return transaction.atomic(view)

本文分享自微信公众号 - 数据云团(SmartData),作者:云团小楠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django实战-小程序端应用功能

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • Django实战-生鲜电商-主页|商品

    前面一小节完成了对登录、注册、激活的视图,需要注意的是,在逻辑处理上需要明确是采用何种方式实现浏览器的登录状态保存。

    小团子
  • Django实战-提供数据库事务功能

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • android view转Bitmap生成截图的方法

    项目中经常会用到分享的功能,有分享链接也有分享图片,其中分享图片有的需要移动端对屏幕内容进行截取分享,说白了就是将view 转成bitmap 再到图片分享,还有...

    砸漏
  • Android中View研究自学之路

    写这篇博客呢是在研究了view将近一个月之后,算是对自己的学习做一个总结,进而反思一下学习方法,本博文不涉及代码分析。

    fanfan
  • Android "巧"仿蚂蚁森林水滴动效

    本文重在思路和性能,就不介绍自定义view和handler避免内存泄漏或是导致空指针这些了,喜欢请clone项目并star、fork一下,感谢各位。

    CCCruch
  • View官方文档

    nimomeng
  • Android6.0源码分析之View(一)

    目前对于view还处于学习阶段,本来打算学习结束之后再写一篇进行总结,但是发现自己自制力太差,学习效率太低,所以在此,边学边写博客,不仅督促自己完成对view的...

    fanfan
  • Android中View研究自学之路 Android6.0源码分析之View(一)Android6.0源码分析之View(二)

    Android中View研究自学之路 http://blog.csdn.net/zrf1335348191/article/details/54171263 ...

    fanfan
  • 小程序url传参如何写变量

    蓓蕾心晴

扫码关注云+社区

领取腾讯云代金券