提交订单页面place_order.html,创建订单成功后跳转到用户订单页面

{% block bottomfiles %}
<script type="text/javascript" src="{% static 'js/jquery-1.12.4.min.js' %}"></script>
<script type="text/javascript">
$('#order_btn').click(function() {
// 获取用户选择的地址id, 支付方式, 要购买的商品id字符串
addr_id = $('input[name="addr_id"]:checked').val() // 获取地址
pay_method = $('input[name="pay_style"]:checked').val() // 获取支付方式
sku_ids = $(this).attr('sku_ids') // 获取商品id拼接的字符串
csrf = $('input[name="csrfmiddlewaretoken"]').val()
// alert(addr_id+":"+pay_method+':'+sku_ids)
// 组织参数
params = {'addr_id':addr_id, 'pay_method':pay_method, 'sku_ids':sku_ids,
'csrfmiddlewaretoken':csrf}
// 发起ajax post请求,访问/order/commit, 传递的参数: addr_id pay_method, sku_ids
$.post('/order/commit', params, function (data) {
if (data.res == 5){
// 创建成功
//alert('创建成功')
localStorage.setItem('order_finish',2); $('.popup_con').fadeIn('fast', function() { setTimeout(function(){
$('.popup_con').fadeOut('fast',function(){
window.location.href = '/user/order/1'; //跳转到用户订单页
});
},3000) });
}
else{
alert(data.errmsg)
}
}) {# localStorage.setItem('order_finish',2);#}
{##}
{# $('.popup_con').fadeIn('fast', function() {#}
{##}
{# setTimeout(function(){#}
{# $('.popup_con').fadeOut('fast',function(){#}
{# window.location.href = 'index.html';#}
{# }); #}
{# },3000)#}
{##}
{# });#}
});
</script>
{% endblock bottomfiles %}

用户订单得试图函数user/views.py

# 用户订单中心
# /user/order
from django.core.paginator import Paginator # 分页
class UserOrderView(LoginRequiredMinxin, View):
def get(self, request, page):
'''显示用户信息页面'''
# 获取用户信息
user = request.user
# 获取用户所有订单的信息
orders = OrderInfo.objects.filter(user=user).order_by('-create_time', '-order_id')
# 遍历每一个订单信息
for order in orders:
order_skus = OrderGoods.objects.filter(order_id=order.order_id)
# 遍历订单中的商品信息
for order_sku in order_skus:
# 计算小计
amount = order_sku.price * order_sku.count
# 动态给order_skus增加小计amount 保存订单小计
order_sku.amount = amount # 动态给order添加商品信息
order.order_skus = order_skus
# 动态给order添加支付信息
order.status_name = OrderInfo.ORDER_STATUS[order.order_status] # 分页 Paginator(数据, 每页显示几条内容)
paginator = Paginator(orders, 1)
# 获取页码
try:
page = int(page)
except Exception as e:
page = 1
# 获取第page页的内容
order_page = paginator.page(page) # todo: 进行页码的控制,页面上最多显示5个页码
# 1.总页数小于5页,页面上显示所有页码
# 2.如果当前页是前3页,显示1-5页
# 3.如果当前页是后3页,显示后5页
# 4.其他情况,显示当前页的前2页,当前页,当前页的后2页
num_pages = paginator.num_pages
if num_pages < 5:
pages = range(1, num_pages + 1)
elif page <= 3:
pages = range(1, 6)
elif num_pages - page <= 2:
pages = range(num_pages - 4, num_pages + 1)
else:
pages = range(page - 2, page + 3) # 组织上下文
context = {'order_page': order_page,
'pages': pages,
'page': 'order'} return render(request, 'user_center_order.html', context)

用户订单静态页面user_center_order.html

{% extends 'layout/base_user_center.html' %}
{% load staticfiles %}
{% block right_content %}
<div class="right_content clearfix">
<h3 class="common_title2">全部订单</h3> {% for order in order_page %}
<ul class="order_list_th w978 clearfix">
<li class="col01">{{ order.create_time }}</li>
<li class="col02">订单号:{{ order.order_id }}</li>
<li class="col02 stress">{{ order.status_name }}</li>
</ul> <table class="order_list_table w980">
<tbody>
<tr>
<td width="55%">
{% for order_sku in order.order_skus %}
<ul class="order_goods_list clearfix">
<li class="col01"><img src="{{ order_sku.sku.image.url }}"></li>
<li class="col02">{{ order_sku.sku.name }}<em>{{ order_sku.price }}/{{ order_sku.sku.unite }}</em></li>
<li class="col03">{{ order_sku.count }}</li>
<li class="col04">{{ order_sku.amount }}元</li>
</ul>
{% endfor %}
</td>
<td width="15%">{{ order.total_price | add:order.transit_price }}元(含运费{{ order.transit_price }}元)</td>
<td width="15%">{{ order.status_name }}</td>
<td width="15%"><a href="#" class="oper_btn">去付款</a></td>
</tr>
</tbody>
</table>
{% endfor %} <div class="pagenation">
{% if order_page.has_previous %} {# 查询是否有前一页 #}
<a href="{% url 'user:order' order_page.previous_page_number %}"><上一页</a>
{% endif %}
{% for pindex in pages %}
{% if pindex == order_page.number %}
<a href="{% url 'user:order' pindex %}" class="active">{{ pindex }}</a>
{% else %}
<a href="{% url 'user:order' pindex %}">{{ pindex }}</a>
{% endif %}
{% endfor %}
{% if order_page.has_next %}
<a href="{% url 'user:order' order_page.next_page_number %}">下一页></a>
{% endif %}
</div>
</div>
{% endblock right_content %}

django-用户中心订单页面的更多相关文章

  1. Django电商项目---完成用户中心(订单中心+收货地址)day7

    完成用户中心(收货地址) df_user/views.py df_user/urls.py templates/df_user/user_center_site.html 界面显示 完成用户中心(全部 ...

  2. ecshop用户中心订单详情增加快递单物流信息查询显示的功能

    1,themes\default\user_transaction.dwt 找到: <!--{if $action eq order_detail} --> 在下面一行加入: <st ...

  3. DJANGO-天天生鲜项目从0到1-012-订单-用户订单页面

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  4. day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏

    目录 1.购物车有效期切换 2.根据有效期不同切换价格 3.购物车删除操作 4.价格结算 5.订单页面-初始化 1.购物车有效期切换 1.关于有效期表结构的设计 1.course/models.py ...

  5. Django商城项目笔记No.16用户部分-用户中心收货地址

    首先完成省市区三级联动 新建areas应用 python ../../manage.py startapp areas 模型类代码 class Area(models.Model): "&q ...

  6. Django商城项目笔记No.13用户部分-用户中心个人信息

    首先处理个人信息的显示 邮箱绑定: 首先给用户的模型类里添加一个字段来说明用户的邮箱是否激活 然后数据库迁移 python manage.py makemigrations python manage ...

  7. Django电商项目---完成登录验证和用户中心(个人信息)day3

    登录验证的实现 背景说明: 用户在商品界面选择商品后,在点击购物车或者结算订单之前 需要完成用户的登录验证,这里用装饰器来完成   创建装饰器类: df_user/user_decorator.py ...

  8. django用户认证系统——注销和页面跳转5

    当用户想切换登录账号,或者想退出登录状态时,这时候就需要注销已登录的账号.现在我们来为网站添加注销登录的功能,这个功能 Django 也已经为我们提供,我们只需做一点简单配置. 注销登录 注销登录的视 ...

  9. Django用户登陆以及跳转后台管理页面3

    Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...

随机推荐

  1. 腾讯物联网操作系统正式开源,最小体积仅1.8 KB

    9月18日,腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny.相比市场上其它系统,腾讯TencentOS tiny在资源占用.设备成本.功耗管理以及安全稳定等层面极具竞争力 ...

  2. Spring Initializr生成的demo测试404错误

    体验Spring Initializr生成的spring boot工程,启动成功, 目录结构如下: 添加了一个简单的controller后,启动成功但访问报404错误: 原因: springboot默 ...

  3. 远程登录Linux系统(使用xshell),远程上传加载文件(使用Xftp)

    一.Xshell(远程登录Linux系统) 1.安装xshell 自己百度找安装包 2.连接登录 1.连接前提 需要Linux开启一个sshd的服务,监听22号端口,一般默认是开启的 查看是否开启: ...

  4. C语言合并果子-贪心算法

    /*有几堆水果.每次你把两堆东西移到一起,形成更大的一堆.每个动作消耗的能量是两堆水果的总重量.如何把所有的水果堆在一起,消耗最少的能量?*/ 以上是题目,该题首先要读懂题目,每次移到一起以后都要将数 ...

  5. 用python批量添加保护站点

    最近在测试的过程中,由于一个bug的复现需要添加1600个保护站点,手工添加谁知到要何年何月,因此想到了用python进行自动化批量添加保护站点! 具体代码如下: #!/usr/bin/env pyt ...

  6. Huber Loss 介绍

    Huber Loss 是一个用于回归问题的带参损失函数, 优点是能增强平方误差损失函数(MSE, mean square error)对离群点的鲁棒性. 当预测偏差小于 δ 时,它采用平方误差,当预测 ...

  7. SpringbBoot之JPA批量更新

    菜鸟学习,不对之处,还请纠正. 需要批量更新数据库的某些数据,项目使用的是JPA,刚对mybatis熟悉一点,又换成了JPA... 有点懵. 查询了一番之后,发现可以使用 In findByIdIn( ...

  8. docker swarm yaml

    https://www.cnblogs.com/bigberg/p/8867326.html 一.简介 Docker有个编排工具docker-compose,可以将组成某个应该的多个docker容器编 ...

  9. MySQL语法顺序及执行顺序

    一.书写顺序 select[distinct] from join on where group by having union order by limit 二.执行顺序 from on join ...

  10. MySQL中的JSON类型

    前言(废话) 昨天抽了点时间在网上搜列了一个开源项目,项目挺完整的,前后台分离还带有微信小程序,我Clone下代码,经过一番倒腾,嘿~还真就跑起来了.在这个过程中,体验了一把VUE项目工程细节,因为之 ...