前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django实战-生鲜电商-订单评论

Django实战-生鲜电商-订单评论

作者头像
小团子
发布于 2019-07-18 08:07:25
发布于 2019-07-18 08:07:25
51800
代码可运行
举报
文章被收录于专栏:数据云团数据云团
运行总次数:0
代码可运行

经过几轮的视图类的编写,整个电商项目的逻辑有清晰一点了么?对于事务逻辑的数据处理,分为查询和创建。相对于本项目来说,创建的操作大多数在用户下单到支付成功这一过程,所以在提交订单的类中,用到了数据库事务,对数据的一致性处理提供了保障。

① 提供评论页面

查询到支付成功的订单,通过反向查询找到所有商品。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def get(self, request, order_id):
        """提供评论页面"""
        user = request.user
        try:
            order = OrderInfo.objects.get(order_id=order_id, user=user)
        except OrderInfo.DoesNotExist:
            return redirect(reverse("orders:info"))

        order.status_name = OrderInfo.ORDER_STATUS[order.status]
        order.skus = []
        order_skus = order.ordergoods_set.all()
        for order_sku in order_skus:
            sku = order_sku.sku
            sku.count = order_sku.count
            sku.amount = sku.price * sku.count
            order.skus.append(sku)

        return render(request, "order_comment.html", {"order": order})

② 处理评论内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def post(self, request, order_id):
        """处理评论内容"""
        user = request.user
        try:
            order = OrderInfo.objects.get(order_id=order_id, user=user)
        except OrderInfo.DoesNotExist:
            return redirect(reverse("orders:info"))

        # 获取评论条数
        total_count = request.POST.get("total_count")
        total_count = int(total_count)

        for i in range(1, total_count + 1):
            sku_id = request.POST.get("sku_%d" % i)
            content = request.POST.get('content_%d' % i, '')
            try:
                order_goods = OrderGoods.objects.get(order=order, sku_id=sku_id)
            except OrderGoods.DoesNotExist:
                continue

            order_goods.comment = content
            order_goods.save()

            # 清除商品详情缓存
            cache.delete("detail_%s" % sku_id)

        order.status = OrderInfo.ORDER_STATUS_ENUM["FINISHED"]
        order.save()

        return redirect(reverse("orders:info", kwargs={"page": 1}))

③ 订单评论类视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class CommentView(LoginRequiredMixin, View):
    """订单评论"""
    def get(self, request, order_id):
        """提供评论页面"""
        user = request.user
        try:
            order = OrderInfo.objects.get(order_id=order_id, user=user)
        except OrderInfo.DoesNotExist:
            return redirect(reverse("orders:info"))

        order.status_name = OrderInfo.ORDER_STATUS[order.status]
        order.skus = []
        order_skus = order.ordergoods_set.all()
        for order_sku in order_skus:
            sku = order_sku.sku
            sku.count = order_sku.count
            sku.amount = sku.price * sku.count
            order.skus.append(sku)

        return render(request, "order_comment.html", {"order": order})

    def post(self, request, order_id):
        """处理评论内容"""
        user = request.user
        try:
            order = OrderInfo.objects.get(order_id=order_id, user=user)
        except OrderInfo.DoesNotExist:
            return redirect(reverse("orders:info"))

        # 获取评论条数
        total_count = request.POST.get("total_count")
        total_count = int(total_count)

        for i in range(1, total_count + 1):
            sku_id = request.POST.get("sku_%d" % i)
            content = request.POST.get('content_%d' % i, '')
            try:
                order_goods = OrderGoods.objects.get(order=order, sku_id=sku_id)
            except OrderGoods.DoesNotExist:
                continue

            order_goods.comment = content
            order_goods.save()

            # 清除商品详情缓存
            cache.delete("detail_%s" % sku_id)

        order.status = OrderInfo.ORDER_STATUS_ENUM["FINISHED"]
        order.save()

        return redirect(reverse("orders:info", kwargs={"page": 1}))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Django实战-生鲜电商-提交订单
在完成了前一小节的数据库事务,提交订单的视图类就可以直接继承 mixin 类。 ① 创建事务保存点 # 创建事务保存点 save_id = transaction.savepoint(
小团子
2019/07/18
6310
Django实战-生鲜电商-提交订单
Django实战-生鲜电商-订单支付
订单支付使用的是支付宝的API。需要到蚂蚁金服开放平台注册账号,申请 网页&移动应用 支付。如果申请还未通过,可以使用沙箱环境进行测试。在本地项目运行环境中需要安装支付宝的SDK。
小团子
2019/07/18
8420
Django实战-生鲜电商-订单支付
【愚公系列】2022年02月 Django商城项目 33-订单确认功能实现
文章目录 一、订单确认功能实现 1.后台处理逻辑 2.JS 二、订单支付成功页面 1.后台逻辑 2.页面设计 3.实际效果 一、订单确认功能实现 1.后台处理逻辑 class OrderView(LoginRequiredJSONMixin,View): def post(self,request): # 这里省略了很多操作,这些操作不需要事务 # 1.订单信息 # 1.1 获取用户信息 user = request.u
愚公搬代码
2022/02/07
5110
【愚公系列】2022年02月 Django商城项目 33-订单确认功能实现
Django实战-生鲜电商-用户地址|订单确认
在完成登录到用户提交订单,这一系列的类视图函数,会发现有大量的数据读写操作,像电商这类的项目,更多的是用户在浏览页面的次数比较多,所以在数据查询的场景中都会采用缓存,将用户第一次打开页面,到下一次重新浏览,这其间就可以提升用户打开页面的速度。
小团子
2019/07/18
6810
Django实战-生鲜电商-用户地址|订单确认
【新星计划】【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-10订单提交成功页面功能实现
当购物车商品数据确认无误之后, 点击结算按钮跳转到订单提交页面, 在该页面用户就需要填写收货地址、联系电话、联系人等信息.
天道Vax的时间宝藏
2021/08/11
7880
【新星计划】【Django】基于PythonWeb的Django框架设计实现天天生鲜系统-9购物车、提交订单、订单提交成功页面功能实现
我们在 cart 应用的 views.py 模块中增加 show_cart 视图函数, 来显示购物车商品数据, 代码如下:
天道Vax的时间宝藏
2021/08/11
1.6K0
Django实战-生鲜电商-用户中心|商品详情
完成了项目的模型层,最需要思考的是数据库该如何设计?这次的电商项目,从用户到下单,都会有哪些操作呢?当看到页面的那些商品信息或是活动促销信息,有考虑过它们之间的联系么?要是,商品的分类要像某宝或是某东,那样有二级和三级分类,这样又该怎么处理呢?如果每个功能的数据表都单独设计成和用户关联,那功能的不断扩展,会不会影响到整个数据库读写与查询呢?
小团子
2019/07/18
6930
Django实战-生鲜电商-用户中心|商品详情
【愚公系列】2022年01月 Django商城项目 30-购物车功能实现
文章目录 一、添加购物车 1.后端逻辑代码 2.前台请求接口代码 3.实际效果 二、获取购物车 1.后端逻辑代码 2.前台页面代码 3.实际效果 三、更新购物车 1.后端逻辑代码 2.前台页面代码 3.实际效果 四、删除购物车 1.后端逻辑代码 2.前台页面代码 五、合并购物车 一、添加购物车 1.后端逻辑代码 """ 一 前后端需求分析需求 前端需要收集: 商品id,商品数量, 选中是可选的(默认就是选中) 如果用户登陆了则请求携带session id
愚公搬代码
2022/02/04
6050
【愚公系列】2022年01月 Django商城项目 30-购物车功能实现
Django实战-生鲜电商-查询支付结果
完成了订单支付,用户需要在个人中心看到商品的支付结果,需要从数据库查询用户成功支付的订单,通过订单编号可以获取到每份订单的信息。
小团子
2019/07/18
6440
Django实战-生鲜电商-查询支付结果
【愚公系列】2022年02月 Django商城项目 32-订单页面设计
文章目录 一、订单页面设计 1.HTML 2.JS 3.后端业务逻辑 二、页面效果 一、订单页面设计 1.HTML <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http
愚公搬代码
2022/02/05
4490
【愚公系列】2022年02月 Django商城项目 32-订单页面设计
Django实战-生鲜电商-购物车信息
在上一小节中,会发现加入购物车,如果用户未登录,是将添加到购物车的商品存储在浏览器的 cookie 中;如果用户已登录,则保存购物车数据到redis中,然后是返回处理结果。
小团子
2019/07/18
5250
Django实战-生鲜电商-购物车信息
Django实战-生鲜电商-登录|注册|激活
完成了模型层,需要映射到数据库中,创建相应的表。在项目的 settings.py 文件中配置数据库,Django 有数据读写分离的配置方式。
小团子
2019/07/18
1.5K0
Django实战-生鲜电商-登录|注册|激活
基于Django的电子商务网站开发(连载32)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/11
5050
【愚公系列】2022年01月 Django商城项目 29-商品浏览历史记录功能实现
思路: 用户每次浏览商品时, 向后台发送请求, 携带商品ID, 然后在 Redis中存储: 用户ID和浏览的商品ID,以时间排序. 来实现存储用户浏览历史记录. 其比较复杂的是redis选用数据结构(有序Set)
愚公搬代码
2022/02/03
5670
【愚公系列】2022年01月 Django商城项目 29-商品浏览历史记录功能实现
Django实战-生鲜电商-主页|商品
前面一小节完成了对登录、注册、激活的视图,需要注意的是,在逻辑处理上需要明确是采用何种方式实现浏览器的登录状态保存。
小团子
2019/07/18
5960
Django实战-生鲜电商-主页|商品
Django实战-生鲜电商-删除购物车数据|退出
经过前两小节的了解,也知道了购物车的商品数据可以保存在 cookie 和 redis 中。同样是先要获取到商品的id,再到用户的购物车中查询到这条数据。会发现,存入到 cookie 的商品数据是 json 数据格式。
小团子
2019/07/18
7600
Django实战-生鲜电商-删除购物车数据|退出
【愚公系列】2022年01月 Django商城项目 27-商品详情页功能实现
文章目录 一、商品详情页功能实现 1.后台查询代码 二、详情页面展示 1.前台html代码 2.实际效果 三、包装、规格、售后页面展示 1.前台html代码 2.实际效果 四、404页面 1.前台html代码 2.实际效果 一、商品详情页功能实现 1.后台查询代码 class DetailView(View): def get(self,request,sku_id): # 获取当前sku的信息 try: sku = SKU.objects
愚公搬代码
2022/02/02
4010
【愚公系列】2022年01月 Django商城项目 27-商品详情页功能实现
Django REST framework+Vue 打造生鲜超市(九) 十、购物车、订单管理和支付功能
十、购物车、订单管理和支付功能 10.1.添加商品到购物车 (1)trade/serializer.py # trade/serializer.py __author__ = 'derek' from .models import ShoppingCart from rest_framework import serializers from goods.models import Goods class ShopCartSerializer(serializers.Serializer):
zhang_derek
2018/04/19
1K0
Django REST framework+Vue 打造生鲜超市(九)
		十、购物车、订单管理和支付功能
Django实战-生鲜电商-加入购物车
用户在进入个人中心前,都需要判断用户是否登录。在加入购物车之前,判断商品是否存在。如果用户已登录,则保存购物车数据到redis中;操作redis,保存购物车数据,"cart_用户id": {"sku_1": 10, "sku_2": 11},先尝试从用户的购物车中获取这个商品的数量;如果购物车中不存在这个商品,则直接添加购物车记录,否则,需要进行数量的累计,再添加到购物车记录中。
小团子
2019/07/18
7820
Django实战-生鲜电商-加入购物车
【愚公系列】2022年01月 Django商城项目 25-热销数据功能实现
文章目录 一、热销数据功能实现 1.后台查询代码 二、热销数据信息展示 1.前台html代码 2.实际效果 一、热销数据功能实现 1.后台查询代码 class HotView(View): def get(self,request,category_id): # 1.获取分类id # 2.查询是否有当前分类 try: category=GoodsCategory.objects.get(id=category_id)
愚公搬代码
2022/02/01
1680
【愚公系列】2022年01月 Django商城项目 25-热销数据功能实现
推荐阅读
相关推荐
Django实战-生鲜电商-提交订单
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档