专栏首页数据云团Django实战-生鲜电商-删除购物车数据|退出

Django实战-生鲜电商-删除购物车数据|退出

经过前两小节的了解,也知道了购物车的商品数据可以保存在 cookie 和 redis 中。同样是先要获取到商品的id,再到用户的购物车中查询到这条数据。会发现,存入到 cookie 的商品数据是 json 数据格式。

from django_redis import get_redis_connection

① 作为 cache backend 使用配置

在项目的 settings.py 文件中,为了使用 django-redis , 应该将 django cache setting 改成这样:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

② 删除购物车数据

class DeleteCartView(View):
    """删除购物车数据"""
    def post(self, request):
        sku_id = request.POST.get("sku_id")  # 商品id

        if not sku_id:
            return JsonResponse({"code": 1, "message": "参数缺少"})

        # 从购物车中删除数据
        if not request.user.is_authenticated():
            # 用户未登录 ,cookies
            cart_json = request.COOKIES.get("cart")
            if cart_json is not None:
                cart = json.loads(cart_json)
                # 如果购物车中有这个商品,则删除
                if sku_id in cart:
                    del cart[sku_id]
                    response = JsonResponse({"code": 0, "message": "删除成功"})
                    response.set_cookie("cart", json.dumps(cart))
                    return response
        else:
            # 用户已登录,redis
            redis_conn = get_redis_connection("default")
            user_id = request.user.id
            # 让redis删除sku_id对应的数据,如果redis中不存在,redis会忽略掉
            redis_conn.hdel("cart_%s" % user_id, sku_id)

        return JsonResponse({"code": 0, "message": "删除成功"})

③ 退出

将用户的session数据删除 ,使用logout将用户的session数据删除

class LogoutView(View):
    """退出"""
    def get(self, request):
        """"""
        # 将用户的session数据删除 ,使用logout将用户的session数据删除
        logout(request)
        return redirect(reverse("goods:index"))

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django实战-生鲜电商-加入购物车

    用户在进入个人中心前,都需要判断用户是否登录。在加入购物车之前,判断商品是否存在。如果用户已登录,则保存购物车数据到redis中;操作redis,保存购物车数据...

    小团子
  • Django实战-生鲜电商-用户中心|商品详情

    完成了项目的模型层,最需要思考的是数据库该如何设计?这次的电商项目,从用户到下单,都会有哪些操作呢?当看到页面的那些商品信息或是活动促销信息,有考虑过它们之间的...

    小团子
  • Django实战-生鲜电商-提交订单

    小团子
  • HiveCube在有赞的实践

    多维分析是数据仓库系统下游常见的基础应用,底层数据是包含多种粒度汇总结果的Cube,用于提供上卷,下钻等操作的数据支持。创建Cube的工具有很多,本文重点介绍在...

    有赞coder
  • pgsql 现有数据拼装临时表

    qubianzhong
  • R语言入门系列之寻找你的R包

    关于寻找目标R包,一般可以在官网利用关键词搜索即可获得相关信息,不过米老鼠在这里想给大家介绍一个特别的R包,它可以帮助你寻找你想要的理想R包。

    生信与临床
  • appium新版本1.17安装后输入appium提示找不到

    appium下载地址:https://cloud.189.cn/t/QRvInqzYzMNf(访问码:dq9x)

    吾爱乐享
  • 【Python爬虫】写一个爬取中国天气网的终端版天气预报爬虫

    前几篇文章介绍了爬取静态网站的主要方法。今天写一个小项目实践一下。本项目可以在终端窗口查询全国3400多个区县的当天天气信息和近七天天气信息。

    树枝990
  • 区块链DAPP开发实战——在安卓下调用本地节点发行的代币和智能合约

    5年以上开发经验,在多领域跨平台开发的经验丰富,负责京东直播的开发和设计工作,热衷于探索新技术新方向,并实际应用。

    京东技术
  • MySQL 使用规范

    Jingbin

扫码关注云+社区

领取腾讯云代金券