python3 之 天天生鲜 浏览记录
#判断用户是否登录
当点击商品(详情),浏览记录商品id --- 存入redis库 以list的形式 user的id作为 key
from django_redis import get_redis_connection
if request.user.is_authenticated(): # 创建客户端 redis_conn = get_redis_connection('default') # connection:连接 # 获取用户🆔 user_id = request.user.id # 从redis中获取购物车数据,返回字典 cart_dict = redis_conn.hgetall('cart_%s' % user_id) for num in cart_dict.values(): # 获取数量 为字节 转换为 整数 cart_num += int(num) # 设置浏览记录:登陆之后的 user_id:[sku_id1,sku_id2,sku_id3,sku_id4,sku_id5] redis_conn.lpush("history_%s" % user_id, sku_id) #向左侧插入 redis_conn.ltrim("history_%s" % user_id, 0, 4) # 只保存几条数据
获取浏览记录 对象
#用户中心
class UserInfo(LoginRequired):
def get(self,request):
#获得用户
user = request.user
#获取最后的地址信息
try:
addr = Address.objects.filter(user=user).last()
except Address.DoesNotExist:
addr = None
# 从 redis 获取浏览记录 # 创建redis客户端 链接默认库 redis_conn = get_redis_connection('default') #获取商品列表 范围下标0-4 5个 id_list = redis_conn.lrange("history_%s" % user.id,0,4) #定义列表 sku_list = [] for id in id_list: sku = GoodsSKU.objects.get(id=id) sku_list.append(sku) context = { 'addr': addr, 'sku_list':sku_list, }
html
{% for sku in sku_list %} <li> <a href="{% url 'goods:detail' sku.id %}"><img src="{{sku.default_image.url}}"></a> <h4><a href="detail.html">{{sku.name}}</a></h4> <div class="operate"> <span class="prize">¥{{sku.price}}</span> <span class="unit">{{sku.price}}/{{sku.unit}}</span> <a href="{% url 'goods:detail' sku.id %}" class="add_goods" title="加入购物车"></a> </div> </li> {% endfor %}