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风格的通配 ...
随机推荐
- Linux文件系统之删除文件、文件夹(rm,rmdir)
rm命令,rmdir命令 rm命令Remove,功能:1)删除目录,2)删除文件. (可以递归的删除指定目录的所有文件及子目录) 注意:rm是一个危险的命令,使用的时候要特别当心,尤其对于初学者来说 ...
- mysql_config_editor设置
[root@node01 etc]# mysql_config_editor set -G mysql3307 -S /tmp/mysql3307.sock -uroot -pEnter passwo ...
- 题解 [BZOJ4368][IOI2015]boxes纪念品盒
题面 解析 可以发现,发纪念品有三种方式: 从左边走再原路返回. 从右边走再原路返回. 走一圈. 注意到,第三种走法最多只会走一次, 因为如果走了多次,那发放的物品数量就会>=\(2k\), 那 ...
- 【JAVA-算法】 截取2个字符中间的字符串
Java Code /** 截取2个字符中间的字符串 */ private void GetMiddleString() { String str = "BB022220011BB007EB ...
- 字典(dict)
定义 In [4]: dt1 = {'name':'ray','age':18,'height':175} In [5]: dt1 Out[5]: {'name': 'ray', 'age': 18, ...
- 路由器配置——RIP路由
一.实验目的:用rip路由实现全网互通 二.拓扑图: 三.具体步骤配置 (1)R1路由器配置 Router>enable --进入特权模式Router#configure terminal ...
- 2019ICPC陕西邀请赛复盘
题目链接:The 2019 ACM-ICPC China Shannxi Provincial Programming Contest A:签到,按花费时间从小到大排个序 #include<cs ...
- 数据结构实验之链表二:逆序建立链表(SDUT 2117)
题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...
- P2699 【数学1】小浩的幂次运算
原题链接 https://www.luogu.org/problemnew/show/P2699 P2699 [数学1]小浩的幂次运算 首先第一眼看这个题就知道要暴力枚举w^i 看是否在区间[l,r] ...
- google中select添加onclick
有下拉跳转框如下所示: <select name="page" size="1" > <option onclick="refurb ...