大家好,我是python222_小锋老师,分享一套优质的基于Python的Django二手商品交易平台 。
项目简介
随着互联网时代的兴起,二手交易也逐渐以网站的形式出现在大众的视野。二手交易不仅能促进资源循环利用和综合利用,也可以发展经济,各取所需,为社会节约财富。基于Python二手物品交易网站是计算机技术与二手市场交易相结合的产物,通过网站系统实现了信息的高效管理。随着计算机技术的不断提高,计算机已经深入到社会生活的各个角落.而采用人工管理和发布交易信息的方法,不仅效率低,易出错,手续繁琐,而且耗费大量人力。为了满足大众对二手市场的需求,特编此基于python的二手交易网站系统。
源码下载
链接: pan.baidu.com/s/1KEiR4rdJ…
提取码: 1234
相关截图
核心代码
from django.db import transaction
from django.http import JsonResponse
from django.shortcuts import render, HttpResponse
from datetime import datetime
from decimal import Decimal
from .models import OrderInfo, OrderDetailInfo
from ..df_cart.models import CartInfo
from ..df_user.models import UserInfo
from ..df_user import user_decorator
@user_decorator.login
def order(request):
uid = request.session['user_id']
user = UserInfo.objects.get(id=uid)
cart_ids = request.GET.getlist('cart_id')
carts = []
total_price = 0
for goods_id in cart_ids:
cart = CartInfo.objects.get(id=goods_id)
carts.append(cart)
total_price = total_price + float(cart.count) * float(cart.goods.gprice)
total_price = float('%0.2f' % total_price)
trans_cost = 10 # 运费
total_trans_price = trans_cost + total_price
context = {
'title': '提交订单',
'page_name': 1,
'user': user,
'carts': carts,
'total_price': float('%0.2f' % total_price),
'trans_cost': trans_cost,
'total_trans_price': total_trans_price,
# 'value':value
}
return render(request, 'df_order/place_order.html', context)
'''
事务提交:
这些步骤中,任何一环节一旦出错则全部退回1
1. 创建订单对象
2. 判断商品库存是否充足
3. 创建 订单 详情 ,多个
4,修改商品库存
5. 删除购物车
'''
@user_decorator.login
@transaction.atomic() # 事务
def order_handle(request):
uid = request.session['user_id']
user = UserInfo.objects.get(id=uid)
tran_id = transaction.savepoint() # 保存事务发生点
cart_ids = request.POST.get('cart_ids') # 用户提交的订单购物车,此时cart_ids为字符串,例如'1,2,3,'
user_id = request.session['user_id'] # 获取当前用户的id
data = {}
try:
order_info = OrderInfo() # 创建一个订单对象
now = datetime.now()
order_info.oid = '%s%d' % (now.strftime('%Y%m%d%H%M%S'), user_id) # 订单号为订单提交时间和用户id的拼接
order_info.odate = now # 订单时间
order_info.user_id = int(user_id) # 订单的用户id
order_info.ototal = Decimal(request.POST.get('total')) # 从前端获取的订单总价
order_info.oaddress = user.uaddress
order_info.save() # 保存订单
for cart_id in cart_ids.split(','): # 逐个对用户提交订单中的每类商品即每一个小购物车
cart = CartInfo.objects.get(pk=cart_id) # 从CartInfo表中获取小购物车对象
order_detail = OrderDetailInfo() # 大订单中的每一个小商品订单
order_detail.order = order_info # 外键关联,小订单与大订单绑定
goods = cart.goods # 具体商品
if cart.count <= goods.gkucun: # 判断库存是否满足订单,如果满足,修改数据库
goods.gkucun = goods.gkucun - cart.count
goods.save()
order_detail.goods = goods
order_detail.price = goods.gprice
order_detail.count = cart.count
order_detail.username=user.uname
order_detail.shopername = goods.gunit
order_detail.save()
cart.delete() # 并删除当前购物车
else: # 否则,则事务回滚,订单取消
transaction.savepoint_rollback(tran_id)
# return JsonResponse(data)
return HttpResponse('库存不足')
data['ok'] = 1
transaction.savepoint_commit(tran_id)
except Exception as e:
print("%s" % e)
print('未完成订单提交')
transaction.savepoint_rollback(tran_id) # 事务任何一个环节出错,则事务全部取消
return JsonResponse(data)
@user_decorator.login
def pay(request):
pass