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风格的通配 ...
随机推荐
- python--ctypes模块:调用C函数
Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件 Windows 系统下的 C 标 ...
- xftp传输文件失败
迁移yii项目的时候,需要手动传输runtime文件夹.但是发现总是传输失败,后来得知是因为xftp必须是root用户才能传输成功. 或者把传输的目标文件夹权限修改为777. 修改目标文件夹的属主和属 ...
- SSM框架初始配置
1 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="h ...
- am335x system upgrade usb wifi rtl8188eus(十九)
1 Scope of Document This document describes how to port rtl8188eus driver to linux 4.14.y desig ...
- linux系统编程--信号
信号的概念 man 7 siganl 查看man手册 信号在我们的生活中随处可见, 如:古代战争中摔杯为号:现代战争中的信号弹:体育比赛中使用的信号枪......他们都有共性:1. 简单 2. 不能 ...
- Spring Boot中@OneToMany与@ManyToOne几个需要注意的问题
@OneToMany如果不加@JoinColumn,系统会自动在主从表中增加一个中间表. 主表: @Entity(name = "Post") public class Post ...
- 对AM信号FFT的matlab仿真
普通调幅波AM的频谱,大信号包络检波频谱分析 u(t)=Ucm(1+macos t)cos ct ma称为调幅系数 它的频谱由载波,上下边频组成 , 包络检波中二极管截去负半周再用电容低通滤波,可 ...
- Mybatis源码学习之DataSource(七)_1
简述 在数据持久层中,数据源是一个非常重要的组件,其性能直接关系到整个数据持久层的性能.在实践中比较常见的第三方数据源组件有Apache Common DBCP.C3P0.Proxool等,MyBat ...
- java代理浅述
代理 代理主要可以分为: 静态代理 JDK自带的动态代理 Cglib 静态代理 静态代理比较简单,简单来说就是不想直接调用被代理类,通过代理类来实现功能.如下就是使用了静态代理 定义接口 public ...
- PHP中的src32
crc32() 函数计算一个字符串的 crc32 多项式. 该函数可用于验证数据的完整性. 语法 crc32(str 参数 描述 string 必需.规定要计算的字符串. 说明 生成 string 参 ...