utils:

  1. # 商品多级联动
  2. def get_category(categorys)->dict:
  3. '''
  4. :param:商品类性
  5. :return: {{[],[]},{[],[]},{[],[]}}
  6. '''
  7. dict1 = forCategory(categorys)
  8. return dict1
  9.  
  10. def forCategory(categorys):
  11. '''递归'''
  12. sum = {}
  13. # if str(categorys) == "<QuerySet []>":
  14. # return Goods.objects.filter(category=category)
  15. for category in categorys:
  16. new_category = Category.objects.filter(category_pid=category.id)
  17. dict1 = forCategory(new_category)
  18. if dict1 == {}:
  19. dict1 = Goods.objects.filter(category=category)
  20. sum[category] = dict1
  21.  
  22. return sum
  1. '''个人虚拟购物车'''
  2. import datetime
  3. from app01.models import Cart
  4.  
  5. class PersonCart():
  6. '''个人虚拟购物车'''
  7. def __init__(self):
  8. self.cart = None
  9. self.time = datetime.datetime.now()
  10.  
  11. # 创建浏览者购物车
  12. def getCart(self,goodsId,cart_num,cartIdList:list)->list:
  13. self.cart = Cart(goods_id=goodsId,member_id=16,cart_num=cart_num)
  14. self.cart.save()
  15. cartIdList.append(self.cart.id)
  16. return cartIdList
  17.  
  18. # 删除浏览者购物车
  19. @staticmethod
  20. def delCart(cartIdList:list):
  21. ''''''
  22. for cartId in cartIdList:
  23. Cart.objects.filter(id=cartId).delete()
  24.  
  25. # 浏览者购物添加到用户购物车里
  26. @staticmethod
  27. def addCart(cartIdList:list,memberId):
  28. if cartIdList is not None:
  29. for cartId in cartIdList:
  30. Cart.objects.filter(id=cartId).update(member_id=memberId)

views:

  1. from django.shortcuts import render,HttpResponse,redirect
  2. from app01.models import *
  3. from app01.utils.function import get_category
  4. import json
  5. from app01.utils.personCart import PersonCart
  6. from app01.utils.personRedis import Redis
  7.  
  8. def index(request):
  9. #获取用户id,用户名
  10. # member_session_id=request.session.get('memberId')
  11. #
  12. # member_session_name=request.session.get('memberName')
  13. from app01.utils.personSession import PersonSession
  14. person = PersonSession(request)
  15. member_session_id = person.session.get('memberId')
  16. member_session_name = person.session.get('memberName')
  17.  
  18. if (request.COOKIES is not None) and (member_session_id is not None):
  19. # 检查是否以前有浏览者登陆
  20. checkPerson(request,member_session_id)
  21. if member_session_id is None:
  22. member_session_id = 16
  23.  
  24. # 拿取商品列表(缓存中)
  25. redis = Redis()
  26.  
  27. goods1 = redis.get('goods1')
  28. if goods1 is None:
  29. goods1=Goods.objects.filter(category__category_pid=1)[:4]
  30. redis.set('goods1', goods1)
  31. goods2 = redis.get('goods2')
  32. if goods2 is None:
  33. goods2 = Goods.objects.filter(category__category_pid=2)[:4]
  34. redis.set('goods2', goods2)
  35. goods3 = redis.get('goods3')
  36. if goods1 is None:
  37. goods3 = Goods.objects.filter(category__category_pid=3)[:4]
  38. redis.set('goods3', goods3)
  39. goods4 = redis.get('goods4')
  40. if goods4 is None:
  41. goods4 = Goods.objects.filter(category__category_pid=4)[:4]
  42. redis.set('goods4', goods4)
  43. goods5 = redis.get('goods5')
  44. if goods1 is None:
  45. goods5 = Goods.objects.filter(category__category_pid=5)[:4]
  46. redis.set('goods5', goods5)
  47. goods6 = redis.get('goods6')
  48. if goods6 is None:
  49. goods6 = Goods.objects.filter(category__category_pid=6)[:4]
  50. redis.set('goods6',goods6)
  51.  
  52. # 拿取商品种类
  53. category1=Category.objects.filter(category_name='新鲜水果').first()
  54. category2=Category.objects.filter(category_name='海产水产').first()
  55. category3=Category.objects.filter(category_name='猪牛羊肉').first()
  56. category4=Category.objects.filter(category_name='禽类蛋类').first()
  57. category5=Category.objects.filter(category_name='新鲜蔬菜').first()
  58. category6=Category.objects.filter(category_name='速冻食品').first()
  59.  
  60. #商品字典
  61. GOODSS = {
  62. category1:goods1,
  63. category2:goods2,
  64. category3:goods3,
  65. category4:goods4,
  66. category5:goods5,
  67. category6:goods6
  68. }
  69.  
  70. cart_num = 0
  71. cart_nums = Cart.objects.filter(member_id=member_session_id)
  72. for i in cart_nums:
  73. cart_num += int(i.cart_num)
  74.  
  75. # 商品多级联动
  76. category_objs = Category.objects.filter(category_pid=0)
  77. category_objs_san = get_category(category_objs)
  78.  
  79. return render(request,'app01_index.html',locals())
  80.  
  81. # 检查浏览者登陆了
  82. def checkPerson(request,memberId):
  83. '''
  84. :return:
  85. '''
  86. # 1 把浏览者购物添加到用户购物车里
  87. # 2 并删除浏览者购物车
  88. # 3 清道夫
  89. cartIdList = request.COOKIES.get('cartIdList')
  90. # 1 把浏览者购物添加到用户购物车里
  91. PersonCart.addCart(cartIdList,memberId)
  92. # 2 并删除浏览者购物车
  93. rep = HttpResponse()
  94. rep.delete_cookie('cartIdList')
  95. # 3 清道夫
  96. Cart.objects.filter(member_id=16).delete()
  97. Cart.objects.filter(member_id=None).delete()

python-Web-django-商城-不登陆添加购物车的更多相关文章

  1. python web -- django

    一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...

  2. python web——Django架构

    环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...

  3. python web django base skill

    web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...

  4. python web django 2nd level -- 待更新

    练习代码位置 实例代码位置 --> app: myblog Form 利用Form表单验证,自己写的html 思路: 新建一个类 LoginForm(forms.Form) 新建对象 obj = ...

  5. django 商城项目之购物车以及python中的一些redis命令

    最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...

  6. [Python] 利用Django进行Web开发系列(一)

    1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...

  7. [Python] 利用Django进行Web开发系列(二)

    1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...

  8. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  9. Redis & Python/Django 简单用户登陆

    一.Redis key相关操作: 1.del key [key..] 删除一个或多个key,如果不存在则忽略 2.keys pattern keys模式匹配,符合glob风格通配符,glob风格的通配 ...

随机推荐

  1. tsung报告中Transactions Statistics缺失问题

    长时间没有做性能测试,最近在使用tsung进行性能测试时,修改tsung自带的范例脚本后,运行查看结果时,发现测试报告中transactions  statistics缺失,刚开始一直以为是监控中的配 ...

  2. 莫比乌斯函数介绍&&基础

    定义 设正整数$N$按照算术基本定理分解质因数为$N=p_1^{c_1}p_2^{c_2} \cdots P_m^{c_m}$,定义函数: $$\mu(N)= \left\{\begin{matrix ...

  3. jvm虚拟机笔记<六> 运行期优化

    这节我们总结一下JVM运行期的优化问题. https://www.cnblogs.com/zhouyuqin/p/5224573.html JVM运行期优化 即时编译器(JIT) 编译对象与触发条件 ...

  4. JavaScript程序设计——FOR循环

    FOR循环流程图: 1.编写求6!的阶乘的代码 2.编写10个10相加的和 3.编写1+2+3+...+10连续相加的和 4.编写1+(1+2)+(1+2+3)+...+(1+2+3+...+10)连 ...

  5. (二)一个MFC程序,消息映射,纯代码

    1.应用程序类 CWinApp https://docs.microsoft.com/zh-cn/cpp/mfc/reference/cwinapp-class?f1url=https%3A%2F%2 ...

  6. 【csp模拟赛5】加减法--宽搜维护联通快

    题目大意: 一开始想用并查集,发现很难维护联通块的代表元素,所以用了宽搜,开数组会炸,所以开一个优先队列维护,每扫完一个联通块,统计答案,清空优先队列,!!千万记住注意数组的大小!!! 代码: #in ...

  7. 利用django框架,手把手教你搭建数据可视化系统(一)

    如何使用django去构建数据可视化的 web,可视化的结果可以呈现在web上. 使用django的MTV模型搭建网站 基础铺垫-MTV模型 Created with Raphaël 2.1.0Req ...

  8. [mysql]my.cnf在哪里

    linux mysql --help|grep my.cnf 查找顺序:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my. ...

  9. AtCoder AGC001D Arrays and Palindrome (构造)

    补一下原来做过的AtCoder思维题的题解 题目链接: https://atcoder.jp/contests/agc001/tasks/agc001_d 先特判一些小的情况. 原题就相当于每个回文串 ...

  10. nginx部署前端项目

    1.在阿里云服务器上安装nginx,推荐使用yum安装 yum install -y nginx // 命令安装 nginx 服务器 2.配置nginx 安装完成后,进入 nginx 配置文件目录 一 ...