三、我的订单
1.请求方式
选项方案请求方法GET请求地址/orders/info/(?P\d+)/ # 我的订单
url(r'^orders/info/(?P\d+)/', views.UserOrderInfoView.as_view(), name='info'),
2.请求参数:路径参数
参数名类型是否必传说明page_numint是当前页码3.响应结果:HTML
user_center_order.html
4.后端接口定义和实现
from django.core.paginator import Paginator, EmptyPage
class UserOrderInfoView(LoginRequiredMixin, View):
"""我的订单"""
def get(self, request, page_num):
"""提供我的订单页面"""
user = request.user
# 查询订单
orders = user.orderinfo_set.all().order_by("-create_time")
# 遍历所有订单
for order in orders:
# 绑定订单状态
order.status_name = OrderInfo.ORDER_STATUS_CHOICES[order.status-1][1]
# 绑定支付方式
order.pay_method_name = OrderInfo.PAY_METHOD_CHOICES[order.pay_method-1][1]
order.sku_list = []
# 查询订单商品
order_goods = order.skus.all()
# 遍历订单商品
for order_good in order_goods:
sku = order_good.sku
sku.count = order_good.count
sku.amount = sku.price * sku.count
order.sku_list.append(sku)
# 分页
page_num = int(page_num)
try:
paginator = Paginator(orders, constants.ORDERS_LIST_LIMIT)
page_orders = paginator.page(page_num)
total_page = paginator.num_pages
except EmptyPage:
return http.HttpResponseNotFound('订单不存在')
context = {
"page_orders": page_orders,
'total_page': total_page,
'page_num': page_num,
}
return render(request, "user_center_order.html", context)
5.渲染我的订单信息
全部订单
{% for order in page_orders %}
- {{ order.create_time.strftime('%Y-%m-%d %H:%M:%S') }}
- 订单号:{{ order.order_id }}
{% for sku in order.sku_list %}
-
关注
打赏
立即登录/注册


微信扫码登录