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风格的通配 ...
随机推荐
- Java中的super的使用
- Elasticsearch:运用scroll接口对大量数据实现更好的分页
在Elasticsearch中,我们可以通过size和from来对我们的结果来进行分页.但是对于数据量很大的索引,这是有效的吗?Scroll API可用于从单个搜索请求中检索大量结果(甚至所有结果), ...
- 关于datagridview控件如何动态改变行数问题
首先要把单元格转换成txt文本框然后根据TextChanged事件来进行修改就可以实现 private void Return_DGV_EditingControlShowing(object sen ...
- C#新增按钮
代码亲测可用,似乎不需要“ADD”,如下:form_load段:for (int i = 0; i < 10; i++){btn = new Button();btn.Parent = this ...
- 04 DRF内容回顾、用户登录 (含跨域) (vuex vue-cookie)、用户认证 (Auth认证)(拦截器)
1.内容回顾 1.视图中常见的继承 2.频率访问控制源码 3.序列化,反序列化 2.初始化代码 1.后端代码:AuthView (1)目录结构 (2)urls (3)view (4)注释掉cors ( ...
- 题解 [BZOJ1925][SDOI2010] 地精部落
题面 解析 这个似乎并不好讲啊 设\(f[i][j]\)表示有\(i\)座山, 最后一座山到达高度是\(i\)座中第\(j\)大的, 且最后一座山是山谷. 注意,\(i\)是代表有\(i\)座山,并不 ...
- Oracle查看锁表和解锁
--注意权限问题 1.查看是否有被锁的表: select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a ...
- 51 Nod 1110距离之和最小V3
1110 距离之和最小 V3 1 秒 131,072 KB 40 分 4 级题 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 * ...
- 计算(calc.cpp) 这题我搞了2晚上qwq
终于会了!可喜可贺!可喜可贺! 计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)” ...
- 【SecureCRT】SecureCRT 护眼配色
终端有一个好的配色,不仅能保护自己的眼睛,也能给人一个好心情,本配色方案适合任意一种SSH客户端软件. 设置背景颜色 Options => Sessions options => ...