[免费]基于Python的Django商品二手交易平台【论文+源码+SQL脚本】
大家好,我是python222_小锋老师,看到一个不错的基于Python的Django商品二手交易平台,分享下哈。
项目视频演示
https://www.bilibili.com/video/BV1v5pMzsEyo/
项目介绍
随着互联网时代的兴起,二手交易也逐渐以网站的形式出现在大众的视野。二手交易不仅能促进资源循环利用和综合利用,也可以发展经济,各取所需,为社会节约财富。基于Python二手物品交易网站是计算机技术与二手市场交易相结合的产物,通过网站系统实现了信息的高效管理。随着计算机技术的不断提高,计算机已经深入到社会生活的各个角落.而采用人工管理和发布交易信息的方法,不仅效率低,易出错,手续繁琐,而且耗费大量人力。为了满足大众对二手市场的需求,特编此基于python的二手交易网站系统。
系统展示
部分代码
{% extends 'base_foot.html' %}{% block body %}<div class="header_con" id="header_con"><div class="header"><div class="welcome fl">欢迎来到再市场!</div><div class="fr">
{# 判断是否已经登录#}{% if request.session.user_name|default:'' != '' %}<div class="login_btn fl"><img class="img-circle" align="center" src="{{ MEDIA_URL }}{{ user.ulogo }}" alt="头像"/><font color="#ff4500">{{ request.session.user_name }}</font></div><div class="login_btn fl"><span>|</span><em><a href="{% url "df_user:logout" %}">退出</a></em></div>{% else %}<div class="login_btn fl"><a href="{% url "df_user:login" %}">登录</a><span>|</span><a href="{% url "df_user:register" %}">注册</a></div>{% endif %}<div class="user_link fl"><span>|</span><a href="{% url "df_goods:index" %}">首页</a><span>|</span><a href="{% url "df_user:info" %}">用户中心</a><span>|</span><a href="{% url "df_user:message" %}">消息中心</a></div></div></div></div><div class="search_bar clearfix"><div class="search_con fl"><script>$(function () {$('.input_btn').click(function () {q = $('.input_text').val();if(q==""){alert("请输入搜索内容");}else{location.href = '{% url "df_goods:ordinary_search" %}?q='+q+'&page=1'}})})</script><input type="text" class="input_text fl" name="q" placeholder="搜索商品"><input type="button" class="input_btn fr" name="" value="搜索"></div>{% if guest_cart == 1 %}<div class="guest_cart fr"><a href="{% url "df_cart:cart" %}" class="cart_name fl">购物车</a><div class="goods_count fl" id="show_count">{{ cart_num }}</div></div>{% else %}<div class="guest_cart fr"><a href="{% url "df_cart:cart" %}" class="cart_name fl">购物车</a><div class="goods_count fl" id="show_count">0</div></div>{% endif %}</div>
{% block content %}
{% endblock content %}
{% block center_body %}
{% endblock center_body %}{% endblock body %}
from django.db import transaction
from django.http import JsonResponse
from django.shortcuts import render, HttpResponsefrom datetime import datetime
from decimal import Decimalfrom .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 = 0for 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_pricecontext = {'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'] # 获取当前用户的iddata = {}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) # 订单的用户idorder_info.ototal = Decimal(request.POST.get('total')) # 从前端获取的订单总价order_info.oaddress = user.uaddressorder_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.countgoods.save()order_detail.goods = goodsorder_detail.price = goods.gpriceorder_detail.count = cart.countorder_detail.username=user.unameorder_detail.shopername = goods.gunitorder_detail.save()cart.delete() # 并删除当前购物车else: # 否则,则事务回滚,订单取消transaction.savepoint_rollback(tran_id)# return JsonResponse(data)return HttpResponse('库存不足')data['ok'] = 1transaction.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
源码下载
链接:https://pan.baidu.com/s/1SeoB0v4svJgkQmKUmO2iKg
提取码:1234