专栏首页用户6517667的专栏基于Django的电子商务网站开发(连载26)

基于Django的电子商务网站开发(连载26)

3.5.2查看购物车中的商品

1.urls.py

...url(r'^view_chart/$', views.view_chart),...

2.views. py

...# 查看购物车def view_chart(request): util = Util() username=util.check_user(request) if username=="": u =LoginForm() return render(request,"index.html",{'uf':uf,"error":"请登录后再进入"}) else: #购物车中商品个数 count=util.cookies_count(request) #返回所有的cookie内容 my_chart_list = util.add_chart(request) return render(request, "view_chart.html", {"user": username, "goodss": my_chart_list, "count":count})...

登录用户通过调用语句my_chart_list= util.add_chart(request)把商品放入购物车中。在产品代码Util类中的add_chart()方法代码如下。

... #加入购物车 def add_chart(self,request): #获取购物车内的所有内容 cookie_list = self.deal_cookes(request) #定义my_chart_list列表 my_chart_list = [] #遍历cookie_list,把里面的内容加入类Chart_list列my_chart_list中 for key in cookie_list: chart_object = Chart_list chart_object = self.set_chart_list(key,cookie_list) my_chart_list.append(chart_object) #返回 my_chart_list return my_chart_list...

(1)调用方法deal_cookes()获取购物车内的所有内容。

(2)通过语句for keyin cookie_list遍历cookie_list。

(3)通过方法set_chart_list()把cookie_list里面的内容加入类Chart_list的my_chart_list列表变量中。

deal_cookes()方法如下。

... #获取购物车内的所有内容 def deal_cookes(self,request): #获取本地所有的COOKIES cookie_list = request.COOKIES #去除COOKIES内的sessionid cookie_list.pop("sessionid") #如果COOKIES内含有csrftoken,去除COOKIES内的csrftoken if "csrftoken" in cookie_list: cookie_list.pop("csrftoken") #返回处理好的购物车内的所有内容 return cookie_list...

方法set_chart_list()用于把获取购物车中的商品放在一个名为Chart_list的类中,返回给模板,其代码如下。

...#把获取购物车中商品放在一个名为Chart_list()的类中,返回给模板def set_chart_list(self,key,cookie_list): chart_list = Chart_list() good_list = get_object_or_404(Goods, id=key) chart_list.set_id(key)#商品的id chart_list.set_name(good_list.name)#商品的名称 chart_list.set_price(good_list.price)#商品的价钱 chart_list.set_count(cookie_list[key])#商品的个数 return chart_list...

(1)通过语句good_list= get_object_or_404(Goods, id=key)获得商品信息。

(2)通过语句chart_list.set_id(key)、chart_list.set_name(good_list.name)、 chart_list.set_price(good_list.price)和chart_list.set_count(cookie_list[key])分别把商品的id、名称、价钱及数量放入到Chart_list类中。

Chart_list类系统在object.py中如下定义。

...#购物车模型class Chart_list(): #主键 def set_id(self,id): self.id=id #商品名称 def set_name(self,name): self.name=name #商品价格 def set_price(self,price): self.price=price #商品数量 def set_count(self,count): self.count=count...

在object.py中定义类模型,除了上面已提及购物车模型类Chart_list,还包括订单中的订单模型类Order_list以及总订单模型类Orders_list。

3.模板

view_chart.html

...{% extends "base.html" %}{% block content %} </ul> <ul class="nav navbar-nav navbar-right"> <li><a href="/user_info/">{{user}}</a></li> <li><a href="/logout/">退出</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> <div> <div id="navbar" class="navbar-collapse collapse"> </div><!--/.navbar-collapse --> </div> <div class="container theme-showcase" role="main"> <font color="#FF0000">{{error}}</font> <div> <div> <table class="table table-striped"> <thead> <tr> <th>编号</th> <th>名称</th> <th>价钱</th> <th>个数</th> <th>移除</th> </tr> </thead> <tbody> {% for key in goodss %} <tr> <td><a href="/view_goods/{{key.id}}/">{{key.id}}</a></td> <td>{{key.name}}</td> <td>¥{{key.price}}</td> <td><form action="/update_chart/{{key.id}}/" method="post"><input type="number" value="{{key.count}}" style="width:30px;" name="count{{key.id}}" id="id_count" required /><input type="submit" value="修改" /></form></td> <td><a href="/remove_chart/{{key.id}}/">移除</a></td> </tr> {% endfor %} </tbody> </table> <a href="/remove_chart_all/">清除所有</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="/view_address/">生成订单</a> </div> </div>{% endblock %}...

通过{% for keyin goodss %}来遍历chart_list类,从而显示购物车中的商品。在这里可以实现修改商品的个数,删除某一个商品以及删除购物车内所有商品的操作。如图3-15所示。

图3-15 显示购物车中商品的内容

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:顾翔

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

原始发表时间:2019-01-24

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 软件工程第一次测试——学生管理系统设计

      成绩录入之前首先输入学号并验证是否存在,存在则继续输入并刷新屏幕,不存在则打印提示信息

    小老鼠
  • 移动测试初探(七)

    使用之前需安装.net4 以及android sdk 并配好环境变量,另外多读读readme。

    小老鼠
  • CUNIT简介

    在使用Automated下会输出TestProcess-Listing.xml和TestProcess-Results.xml文档,把CUNIT项目中的CUni...

    小老鼠
  • weex-17-组件list

    我们根据数组动态的添加子区域,这里我们要使用到组件cell,当列表上数据比较多时,使用cell能够更高效的管理内存和组件重用

    酷走天涯
  • Python Data Structures - C2 Sort

    参考内容: 1.Problem Solving with Python Chapter5: Search and Sorting online_link ...

    宅男潇涧
  • 【快学springboot】14.操作redis之list

    之前讲解了springboot(StringRedisTemplate)操作redis的string数据结构,这篇文章将会讲解list数据结构

    Happyjava
  • 作业 -- 几道简单的Python题

    1、编写程序,要求生成10240个随机[0,512)之间的整数,并统计每个元素出现的次数。

    py3study
  • Redis源码解析——双向链表

            相对于之前介绍的字典和SDS字符串库,Redis的双向链表库则是非常标准的、教科书般简单的库。但是作为Redis源码的一部分,我决定还是要讲一讲...

    方亮
  • dotnet 启动 JIT 多核心编译提升启动性能 原理启动这个功能环境性能

    用2分钟提升十分之一的启动性能,通过在桌面程序启动 JIT 多核心编译提升启动性能 在 dotnet 可以通过让 JIT 进行多核心编译提升软件的启动性能,在默...

    林德熙
  • Python解中国剩余定理(孙子定理)

    IT故事会

扫码关注云+社区

领取腾讯云代金券