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> <a href="/view_address/">生成订单</a> </div> </div> {% endblock %}...
通过{% for keyin goodss %}来遍历chart_list类,从而显示购物车中的商品。在这里可以实现修改商品的个数,删除某一个商品以及删除购物车内所有商品的操作。如图3-15所示。
图3-15 显示购物车中商品的内容
星云测试
奇林软件
联合通测
顾翔凡言:
软件测试正在生病,而且病得不轻,自动化测试被要不吹得太火,要不一点都不会,自动化比不过开发、测试又找不到缺陷,丢了西瓜也捡不到芝麻。