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

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

3.5.2查看购物车中的商品


1urls.py

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


2views. 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_listmy_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所示。

         

image.png

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



星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

      软件测试正在生病,而且病得不轻,自动化测试被要不吹得太火,要不一点都不会,自动化比不过开发、测试又找不到缺陷,丢了西瓜也捡不到芝麻。

目录
相关文章
|
3月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
93 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
7月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
202 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
安全 测试技术 Python
基于Django的电子商务网站开发(连载39)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
75 0
基于Django的电子商务网站开发(连载39)
|
存储 安全 前端开发
基于Django的电子商务网站开发(连载37)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
153 0
基于Django的电子商务网站开发(连载37)
|
测试技术 Python
基于Django的电子商务网站开发(连载36)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
96 0
基于Django的电子商务网站开发(连载36)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载34)
基于Django的电子商务网站开发(连载34)
66 0
基于Django的电子商务网站开发(连载34)
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载33)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
97 0
基于Django的电子商务网站开发(连载33)
|
SQL XML 前端开发
基于Django的电子商务网站开发(连载40)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
184 0
|
测试技术 Python
基于Django的电子商务网站开发(连载38)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
92 0
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载35)
基于Django的电子商务网站开发(连载35)
106 0