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风格的通配 ...
随机推荐
- centos7编译安装PHP7已经把你逼到去安定医院看门诊的地步?请看此文
本文援引自https://www.cnblogs.com/lamp01/p/10101659.html,亲测可行,特此鸣谢 地球上总有一群人是如此深爱PHP,但无奈的是编译安装的过程化特性,导致各种b ...
- [AngularJS] Decorator pattern for code reuse
Imaging you have a large application, inside this large application you have many small individual a ...
- Codeforces Round #346 (Div. 2) B题
B. Qualifying Contest Very soon Berland will hold a School Team Programming Olympiad. From each of t ...
- luogu 1169 [ZJOI2007]棋盘制作 悬线dp
悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...
- Non-standard serial port baud rate setting
////combuad_recv.cpp #include <stdio.h> /*标准输入输出定义*/ #include <stdlib.h> /*标准函数库定义*/ #in ...
- HDU 5544 Ba Gua Zhen ( 2015 CCPC 南阳 C、DFS+时间戳搜独立回路、线性基 )
题目链接 题意 : 给出一副简单图.要你找出一个回路.使得其路径上边权的异或和最大 分析 : 类似的题有 BZOJ 2115 对于这种异或最长路的题目(走过的边可以重复走) 答案必定是由一条简单路径( ...
- 收藏一个RMQ模板
int a[1100]; int dp[maxn][20]; void rmq_init(){ for(int i=0;i<n;i++) dp[i][0]=a[i]; for(int j=1;( ...
- 简单NLT
目录 操作文本 需求 代码实现 操作文本 I have a dream that my four little children will one day live in a nation where ...
- codeforces997C
Sky Full of Stars CodeForces - 997C On one of the planets of Solar system, in Atmosphere University, ...
- 【面试】ArrayList 和 HaseMap 的区别和应用场景
ArrayLiat: ArrayList array = new ArrayList(); array.add("张三"); array.add("李四"); ...