django-用户中心订单页面
提交订单页面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-用户中心订单页面的更多相关文章
- Django电商项目---完成用户中心(订单中心+收货地址)day7
完成用户中心(收货地址) df_user/views.py df_user/urls.py templates/df_user/user_center_site.html 界面显示 完成用户中心(全部 ...
- ecshop用户中心订单详情增加快递单物流信息查询显示的功能
1,themes\default\user_transaction.dwt 找到: <!--{if $action eq order_detail} --> 在下面一行加入: <st ...
- DJANGO-天天生鲜项目从0到1-012-订单-用户订单页面
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏
目录 1.购物车有效期切换 2.根据有效期不同切换价格 3.购物车删除操作 4.价格结算 5.订单页面-初始化 1.购物车有效期切换 1.关于有效期表结构的设计 1.course/models.py ...
- Django商城项目笔记No.16用户部分-用户中心收货地址
首先完成省市区三级联动 新建areas应用 python ../../manage.py startapp areas 模型类代码 class Area(models.Model): "&q ...
- Django商城项目笔记No.13用户部分-用户中心个人信息
首先处理个人信息的显示 邮箱绑定: 首先给用户的模型类里添加一个字段来说明用户的邮箱是否激活 然后数据库迁移 python manage.py makemigrations python manage ...
- Django电商项目---完成登录验证和用户中心(个人信息)day3
登录验证的实现 背景说明: 用户在商品界面选择商品后,在点击购物车或者结算订单之前 需要完成用户的登录验证,这里用装饰器来完成 创建装饰器类: df_user/user_decorator.py ...
- django用户认证系统——注销和页面跳转5
当用户想切换登录账号,或者想退出登录状态时,这时候就需要注销已登录的账号.现在我们来为网站添加注销登录的功能,这个功能 Django 也已经为我们提供,我们只需做一点简单配置. 注销登录 注销登录的视 ...
- Django用户登陆以及跳转后台管理页面3
Django用户登陆以及跳转后台管理页面1http://www.cnblogs.com/ujq3/p/7891774.html Django用户登陆以及跳转后台管理页面2http://www.cnbl ...
随机推荐
- 腾讯物联网操作系统正式开源,最小体积仅1.8 KB
9月18日,腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny.相比市场上其它系统,腾讯TencentOS tiny在资源占用.设备成本.功耗管理以及安全稳定等层面极具竞争力 ...
- cisco ap客户端无规律掉线
设备 cisco air-ct2504-50-k9 cisco air-ap1832I-H-k9 首先根据这个帖子 https://community.cisco.com/t5/other-wirel ...
- 013 ECMAScript基础应用
1.ECMAScript概述 (1)前端的发展历程 <1>web 1.0时代 最初的网页以HTML为主,是纯静态的网页.网页是只读的,信息流只能从服务的到客户端单向流通.开发人员也只关心页 ...
- day26——tyoe元类与object的联系、反射、函数与方法的区别、双下方法
day26 type元类与object联系 type 获取对象从属于的类 python 中一切皆对象, 类在某种意义上也是一个对象,python中自己定义的类,以及大部分内置类,都是由type元类(构 ...
- 深度学习-深度强化学习(DRL)-Policy Gradient与PPO笔记
Policy Gradient 初始学习李宏毅讲的强化学习,听台湾的口音真是费了九牛二虎之力,后来看到有热心博客整理的很细致,于是转载来看,当作笔记留待复习用,原文链接在文末.看完笔记再去听一听李宏毅 ...
- Rust 智能指针(二)
1. Rc<T> 引用计数指针 Rc<T> 是引用计数指针,可以使用clone使得指针所指向的数据具有多个所有者. enum List { Cons(i32, Rc<Li ...
- .net core webapi通过中间件获取请求和响应内容
本文主要根据中间件来实现对.net core webapi中产生的请求和响应数据进行获取并存入日志文件中: 这里不详细介绍日志文件的使用.你可以自己接入NLog,log4net,Exceptionle ...
- [转]Sublime Text 3安装Json格式化插件
1.安装Package control 首先需要安装Package control,如果已经安装请跳过此步骤.按Ctrl+Shift+p打开命令搜索框,输入PC,点击图中条目安装,如下图: 成功后 ...
- Java 之 Maven 常用命令
一.Maven 常用命令 在 cmd 中可以通过一系列的 maven 命令对我们的 maven 工程进行编译.测试.运行.打包.安装和部署. 1.compile 命令 compile 是 maven ...
- Android 为TV端助力之解决ViewPager嵌套RecyclerView水平滑动问题
public class MyViewPager extends ViewPager { private RecyclerView recyclerView; public MyViewPager(@ ...