python-Web-django-商城-不登陆添加购物车

utils:

# 商品多级联动
def get_category(categorys)->dict:
    '''
    :param:商品类性
    :return: {{[],[]},{[],[]},{[],[]}}
    '''
    dict1 = forCategory(categorys)
    return dict1

def forCategory(categorys):
    '''递归'''
    sum = {}
    # if str(categorys) == "<QuerySet []>":
    #     return Goods.objects.filter(category=category)
    for category in categorys:
        new_category = Category.objects.filter(category_pid=category.id)
        dict1 = forCategory(new_category)
        if dict1 == {}:
            dict1 = Goods.objects.filter(category=category)
        sum[category] = dict1

    return sum

 

'''个人虚拟购物车'''
import datetime
from app01.models import Cart


class PersonCart():
    '''个人虚拟购物车'''
    def __init__(self):
        self.cart = None
        self.time = datetime.datetime.now()


    # 创建浏览者购物车
    def getCart(self,goodsId,cart_num,cartIdList:list)->list:
        self.cart = Cart(goods_id=goodsId,member_id=16,cart_num=cart_num)
        self.cart.save()
        cartIdList.append(self.cart.id)
        return cartIdList

    # 删除浏览者购物车
    @staticmethod
    def delCart(cartIdList:list):
        ''''''
        for cartId in cartIdList:
            Cart.objects.filter(id=cartId).delete()

    # 浏览者购物添加到用户购物车里
    @staticmethod
    def addCart(cartIdList:list,memberId):
        if cartIdList is not None:
            for cartId in cartIdList:
                Cart.objects.filter(id=cartId).update(member_id=memberId)

 

views:

from django.shortcuts import render,HttpResponse,redirect
from app01.models import *
from app01.utils.function import get_category
import json
from app01.utils.personCart import PersonCart
from app01.utils.personRedis import Redis


def index(request):
    #获取用户id,用户名
    # member_session_id=request.session.get('memberId')
    #
    # member_session_name=request.session.get('memberName')
    from app01.utils.personSession import PersonSession
    person = PersonSession(request)
    member_session_id = person.session.get('memberId')
    member_session_name = person.session.get('memberName')


    if (request.COOKIES is not None) and (member_session_id is not None):
        # 检查是否以前有浏览者登陆
        checkPerson(request,member_session_id)
    if member_session_id is None:
        member_session_id = 16

    # 拿取商品列表(缓存中)
    redis = Redis()

    goods1 = redis.get('goods1')
    if goods1 is None:
        goods1=Goods.objects.filter(category__category_pid=1)[:4]
        redis.set('goods1', goods1)
    goods2 = redis.get('goods2')
    if goods2 is None:
        goods2 = Goods.objects.filter(category__category_pid=2)[:4]
        redis.set('goods2', goods2)
    goods3 = redis.get('goods3')
    if goods1 is None:
        goods3 = Goods.objects.filter(category__category_pid=3)[:4]
        redis.set('goods3', goods3)
    goods4 = redis.get('goods4')
    if goods4 is None:
        goods4 = Goods.objects.filter(category__category_pid=4)[:4]
        redis.set('goods4', goods4)
    goods5 = redis.get('goods5')
    if goods1 is None:
        goods5 = Goods.objects.filter(category__category_pid=5)[:4]
        redis.set('goods5', goods5)
    goods6 = redis.get('goods6')
    if goods6 is None:
        goods6 = Goods.objects.filter(category__category_pid=6)[:4]
        redis.set('goods6',goods6)



    # 拿取商品种类
    category1=Category.objects.filter(category_name='新鲜水果').first()
    category2=Category.objects.filter(category_name='海产水产').first()
    category3=Category.objects.filter(category_name='猪牛羊肉').first()
    category4=Category.objects.filter(category_name='禽类蛋类').first()
    category5=Category.objects.filter(category_name='新鲜蔬菜').first()
    category6=Category.objects.filter(category_name='速冻食品').first()


    #商品字典
    GOODSS = {
        category1:goods1,
        category2:goods2,
        category3:goods3,
        category4:goods4,
        category5:goods5,
        category6:goods6
              }

    cart_num = 0
    cart_nums = Cart.objects.filter(member_id=member_session_id)
    for i in cart_nums:
        cart_num += int(i.cart_num)

    # 商品多级联动
    category_objs = Category.objects.filter(category_pid=0)
    category_objs_san = get_category(category_objs)

    return render(request,'app01_index.html',locals())



# 检查浏览者登陆了
def checkPerson(request,memberId):
    '''
    :return: 
    '''
    # 1 把浏览者购物添加到用户购物车里
    # 2 并删除浏览者购物车
    # 3 清道夫
    cartIdList = request.COOKIES.get('cartIdList')
    # 1 把浏览者购物添加到用户购物车里
    PersonCart.addCart(cartIdList,memberId)
    # 2 并删除浏览者购物车
    rep = HttpResponse()
    rep.delete_cookie('cartIdList')
    # 3 清道夫
    Cart.objects.filter(member_id=16).delete()
    Cart.objects.filter(member_id=None).delete()

 

转载于:https://www.cnblogs.com/person1-0-1/p/11390975.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要建立一个基于PythonDjango的电商项目小鱼商城,需要按照以下步骤进行: 1. 环境准备:首先,确保已经安装了PythonDjango框架。可以使用pip来安装所需的依赖库和模块。 2. 数据库设计:设计一个合适的数据库模型来存储商品信息、用户信息、订单等数据。可以使用Django自带的ORM来创建数据库表和关系。 3. 创建Django应用:使用Django的命令行工具创建一个新的Django应用。在终端中运行命令"python manage.py startapp fishstore",这将创建一个名为fishstore的Django应用。 4. 定义模型:在fishstore应用中定义商品、用户、订单等模型类。可以使用Django的Model类来创建模型,并定义各个字段的属性和关联关系。 5. 创建视图和URL:在fishstore应用中创建视图函数来处理用户请求,并将其与URL进行映射。可以使用Django的URL配置文件来指定URL和视图之间的对应关系。 6. 编写模板:使用HTML、CSS和JavaScript来创建网页模板。可以使用Django的模板语言来动态渲染数据并将其呈现给用户。 7. 实现功能:根据需求,实现用户注册、登录、商品展示、购物车管理、订单生成等功能。根据模型和视图之间的逻辑关系,编写相关的业务逻辑代码。 8. 测试和调试:在本地环境中运行和测试应用,确保各项功能正常运行。使用Django的命令行工具运行服务器,然后在浏览器中访问相应的URL进行测试。 9. 部署上线:将应用部署到服务器上,并配置好相关的数据库和服务器设置。可以使用云服务提供商或自己的服务器进行部署,确保项目可以在公网上访问。 10. 维护和优化:持续关注应用的性能和用户体验,并进行相应的优化和维护工作。可以通过监控日志和用户反馈来识别和解决问题,保证应用的稳定和可用性。 以上是一个简单的步骤指引,帮助你开始构建一个基于PythonDjango的电商项目小鱼商城。具体的实现和功能细节需要根据项目需求和个人的理解进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值