3.4.2 商品概要信息的分页显示
商品概要信息的分页显示页面是登录操作以后的首界面,以列表的形式显示已经存在的商品,通过这个页面,用户可以进行查看商品信息的详情、添加商品进入购物车等操作。
1. urls.py
... url(r'^goods_view/$', views.goods_view), ...
2. views.py
... #查看商品信息 def goods_view(request): util = Util() username = util.check_user(request) if username =="": uf = LoginForm() return render(request,"index.html",{'uf':uf,"error":"请登录后再进入"}) else: #获得所有商品信息 good_list = Goods.objects.all() #获得购物车中物品数量 count = util.cookies_count(request) #翻页操作 paginator = Paginator(good_list, 5) page = request.GET.get('page') try: contacts = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. contacts = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. contacts = paginator.page(paginator.num_pages) return render(request, "goods_view.html", {"user": username, "goodss": contacts,"count":count}) ...
(1)通过代码good_list= Goods.objects.all()获得所有的商品信息。
(2)通过paginator = Paginator(good_list, 5)以及下面的代码来实现分页显示的功能。
3. 模板
goods_view.html
{% extends "base.html" %} {% block content %} <li><a href="/view_chart/">查看购物车<font color="#FF0000">{{ count }}</font></a></li> </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 class="container theme-showcase" role="main"> <!--商品表单--> <div> <div id="navbar" class="navbar-collapse collapse"> <form method="post" action="/search_name/"> <div> <input name="good" type="text" placeholder="名称"> </div> <button type="submit" class="btn btn-success">搜索</button> </form> </div><!--/.navbar-collapse --> </div> <div> <div> <table class="table table-striped"> <thead> <tr> <th>编号</th> <th>名称</th> <th>价钱</th> <th>查看详情</th> <th>放入购物车</th> </tr> </thead> <tbody> {% for goods in goodss %} <tr> <td>{{ goods.id }}</td> <td>{{ goods.name }}</td> <td>¥{{ goods.price }}</td> <td><a href="/view_goods/{{goods.id}}/">查看</a></td> <td><a href="/add_chart/{{goods.id}}/1/">放入</a></td> </tr> {% endfor %} </tbody> </table> </div> </div> <!-- 列表分页器 --> <div> <span> {% if goodss.has_previous %} <a href="?page={{ goodss.previous_page_number }}">上一页</a> {% endif %} <span> Page {{ goodss.number }} of {{ goodss.paginator.num_pages }}. </span> {% if goodss.has_next %} <a href="?page={{ goodss.next_page_number }}">下一页</a> {% endif %} </span> </div> {% endblock %}
所有商品是通过列表变量goodss返回给模板文件,在模板文件中通过{% for goods in goodss %}来遍历显示。分页功能通过模板中<!--列表分页器 -->下面的代码来实现,见图3-12所示。
图3-12 商品信息列表
星云测试
奇林软件
联合通测
顾翔凡言:
软件测试正在生病,而且病得不轻,自动化测试被要不吹得太火,要不一点都不会,自动化比不过开发、测试又找不到缺陷,丢了西瓜也捡不到芝麻。