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()
python-Web-django-商城-不登陆添加购物车的更多相关文章
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- python web——Django架构
环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...
- python web django base skill
web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...
- python web django 2nd level -- 待更新
练习代码位置 实例代码位置 --> app: myblog Form 利用Form表单验证,自己写的html 思路: 新建一个类 LoginForm(forms.Form) 新建对象 obj = ...
- django 商城项目之购物车以及python中的一些redis命令
最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...
- [Python] 利用Django进行Web开发系列(一)
1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...
- [Python] 利用Django进行Web开发系列(二)
1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...
- python web框架——扩展Django&tornado
一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...
- Redis & Python/Django 简单用户登陆
一.Redis key相关操作: 1.del key [key..] 删除一个或多个key,如果不存在则忽略 2.keys pattern keys模式匹配,符合glob风格通配符,glob风格的通配 ...
随机推荐
- tsung报告中Transactions Statistics缺失问题
长时间没有做性能测试,最近在使用tsung进行性能测试时,修改tsung自带的范例脚本后,运行查看结果时,发现测试报告中transactions statistics缺失,刚开始一直以为是监控中的配 ...
- 莫比乌斯函数介绍&&基础
定义 设正整数$N$按照算术基本定理分解质因数为$N=p_1^{c_1}p_2^{c_2} \cdots P_m^{c_m}$,定义函数: $$\mu(N)= \left\{\begin{matrix ...
- jvm虚拟机笔记<六> 运行期优化
这节我们总结一下JVM运行期的优化问题. https://www.cnblogs.com/zhouyuqin/p/5224573.html JVM运行期优化 即时编译器(JIT) 编译对象与触发条件 ...
- JavaScript程序设计——FOR循环
FOR循环流程图: 1.编写求6!的阶乘的代码 2.编写10个10相加的和 3.编写1+2+3+...+10连续相加的和 4.编写1+(1+2)+(1+2+3)+...+(1+2+3+...+10)连 ...
- (二)一个MFC程序,消息映射,纯代码
1.应用程序类 CWinApp https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cwinapp-class?f1url=https%3A%2F%2 ...
- 【csp模拟赛5】加减法--宽搜维护联通快
题目大意: 一开始想用并查集,发现很难维护联通块的代表元素,所以用了宽搜,开数组会炸,所以开一个优先队列维护,每扫完一个联通块,统计答案,清空优先队列,!!千万记住注意数组的大小!!! 代码: #in ...
- 利用django框架,手把手教你搭建数据可视化系统(一)
如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上. 使用django的MTV模型搭建网站 基础铺垫-MTV模型 Created with Raphaël 2.1.0Req ...
- [mysql]my.cnf在哪里
linux mysql --help|grep my.cnf 查找顺序:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my. ...
- AtCoder AGC001D Arrays and Palindrome (构造)
补一下原来做过的AtCoder思维题的题解 题目链接: https://atcoder.jp/contests/agc001/tasks/agc001_d 先特判一些小的情况. 原题就相当于每个回文串 ...
- nginx部署前端项目
1.在阿里云服务器上安装nginx,推荐使用yum安装 yum install -y nginx // 命令安装 nginx 服务器 2.配置nginx 安装完成后,进入 nginx 配置文件目录 一 ...